我正在为作业创建一个简单的控制台小程序,我在尝试运行我的应用时遇到了错误。错误是:
'类型不匹配:无法从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'");
}
}
}
}
答案 0 :(得分:3)
查看代码的这一行
String operator = readLine("Which operator would you like to use?");`
并将其与导致错误的那个进行比较
String thirdNum = println("Would you like a third number?(Y/N)");
您似乎错误地将readLine
与println
答案 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