Java - 错误消息:'无法从void转换为String

时间:2012-07-22 21:58:33

标签: java string void

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

错误发生四次,因为我有一个反复出现的'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 个答案:

答案 0 :(得分:3)

查看代码的这一行

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

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

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

您似乎错误地将readLineprintln

放在了一起

答案 1 :(得分:1)

看起来你的println函数被声明为void(请发布它的签名顺便提一下),但是你试图将它的结果(void)赋予String变量。

答案 2 :(得分:1)

println()方法没有返回类型,因此返回void,您无法将其明确地分配给String引用。

答案 3 :(得分:1)

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

println或(printline)就是这么做的。它打印一行并且不返回任何内容。你试着把它(void)放入一个字符串中。这不起作用。

你可能想要使用另一个

   readline