Java — сообщение об ошибке: «Невозможно преобразовать из void в String

Я создаю простой консольный апплет для задания и столкнулся с ошибкой при попытке запустить свое приложение. Ошибка:
"Несоответствие типов: невозможно преобразовать из 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'");
                    }
            }   
        }
    }

person Joel Biffin    schedule 22.07.2012    source источник


Ответы (4)


глядя на эту строку вашего кода

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

и сравнить его с тем, который вызывает ошибку

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

Похоже, вы перепутали readLine с println

person La bla bla    schedule 22.07.2012

Похоже, ваша функция println объявлена ​​как недействительная (пожалуйста, опубликуйте ее подпись, кстати), но вы пытаетесь присвоить ее результат (недействующий) переменной String.

person dbf    schedule 22.07.2012
comment
Я думаю, вы имеете в виду назначение, а не задницу. - person Code-Apprentice; 23.07.2012
comment
+1 к Code-Apprentice за то, что он не притворяется. - person aspen100; 11.06.2014

Метод println() не имеет возвращаемого типа, поэтому он возвращает void, и вы, очевидно, не можете присвоить его ссылке String.

person Juvanis    schedule 22.07.2012

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

println или (printline) делает именно это. Он печатает строку и ничего не возвращает. Вы пытаетесь поместить это ничто (void) в строку. Это не работает.

Вы, вероятно, имели в виду использовать другой

   readline
person Kai Mattern    schedule 22.07.2012