0

我正在为分配创建一个简单的控制台小程序,但在尝试运行我的应用程序时遇到了错误。错误是:
“类型不匹配:无法从 void 转换为字符串”。

由于我有一个反复出现的“ElseIf”语句,因此该错误发生了四次。
这是问题所在的元素:

String thirdNum = println("Would you like a third number?(Y/N)");

这是完整的代码:

import acm.program.*;

    public class abacusConsole extends ConsoleProgram {
        public void run() {
            println("This program is a basic calculator two numbers!");
            println("Operations that the program recognises: \n Add \n Subtract \n Multiply \n Divide");
            String operator = readLine("Which operator would you like to use?");

            if (operator.equals("Add")) {
                int n1 = readInt("First Number");
                int n2 = readInt("Second Number");
                String thirdNum = println("Would you like a third number?(Y/N)");
                if (thirdNum.equals("Y")) {
                    int n3 = readInt("Third Number:");
                    int total = n1 + n2 + n3;
                    println(+n1+" + "+n2+" + "+n3+" = "+total+".");
                } else if (thirdNum.equals("N")) {
                    int total = n1 + n2;
                    println(+n1+" + "+n2+" = "+total+".");
                } else {
                    println("Please reload the application and type in either 'Y' or 'N'");
                }
            } else if (operator.equals("Subtract")) {
                int n1 = readInt("First Number");
                int n2 = readInt("Second Number");
                String thirdNum = println("Would you like a third number?(Y/N)");
                if (thirdNum.equals("Y")) {
                    int n3 = readInt("Third Number:");
                    int total = n1 - n2 - n3;
                    println(+n1+" - "+n2+" - "+n3+" = "+total+".");
                } else if (thirdNum.equals("N")) {
                    int total = n1 + n2;
                    println(+n1+" - "+n2+" = "+total+".");
                } else {
                    println("Please reload the application and type in either 'Y' or 'N'");
                }
            } else if (operator.equals("Multiply")) {
                int n1 = readInt("First Number");
                int n2 = readInt("Second Number");
                String thirdNum = println("Would you like a third number?(Y/N)");
                if (thirdNum.equals("Y")) {
                    int n3 = readInt("Third Number:");
                    int total = n1 * n2 * n3;
                    println(+n1+" x "+n2+" x "+n3+" = "+total+".");
                } else if (thirdNum.equals("N")) {
                    int total = n1 * n2;
                    println(+n1+" x "+n2+" = "+total+".");
                } else {
                    println("Please reload the application and type in either 'Y' or 'N'");
                }
            } else if (operator.equals("Divide")) {
                    int n1 = readInt("First Number");
                    int n2 = readInt("Second Number");
                    String thirdNum = println("Would you like a third number?(Y/N)");
                    if (thirdNum.equals("Y")) {
                        int n3 = readInt("Third Number:");
                        int total = n1 / n2 / n3;
                        println(+n1+" / "+n2+" / "+n3+" = "+total+".");
                    } else if (thirdNum.equals("N")) {
                        int total = n1 / n2;
                        println(+n1+" / "+n2+" = "+total+".");
                    } else {
                        println("Please reload the application and type in either 'Y' or 'N'");
                    }
            }   
        }
    }
4

4 回答 4

3

查看您的代码的这一行

String operator = readLine("Which operator would you like to use?");`

并将其与导致错误的那个进行比较

String thirdNum = println("Would you like a third number?(Y/N)");

看起来你放错地方readLineprintln

于 2012-07-22T22:01:19.320 回答
1

看起来您的 println 函数被声明为 void(请附上它的签名 btw),但您正试图将其结果(void)分配给 String 变量。

于 2012-07-22T22:00:50.880 回答
1

println()方法没有返回类型,因此它返回void并且您显然不能将其分配给String引用。

于 2012-07-22T22:01:09.957 回答
1
 String thirdNum = println("Would you like a third number?(Y/N)");

println 或 (printline) 正是这样做的。它打印一行并且不返回任何内容。您尝试将任何内容(void)放入字符串中。那是行不通的。

你可能打算使用另一个

   readline
于 2012-07-22T22:03:45.670 回答