我最近制作了一个计算器程序,但发生了三个错误。这是代码:
import java.util.Scanner;
public class mathyStuff {
public static void main(String[] args) throws InterruptedException {
Scanner raw = new Scanner(System.in);
String input = raw.nextLine();
int y = 0;
while (y < input.length()) {
if (input.substring(y, y+1) == "+" || input.
substring(y, y+1) == "-" || input.substring(y, y+1) == "/" || input.substring(y, y+1) == "*") {
String x = input.substring(y, y+1);
int z1 = Integer.parseInt(input.substring(0,y));
int z2 = Integer.parseInt(input.substring(y+1, 0));
}
else {
y = y + 1;
}
}
math(z1,x,z2);
}
public static void math (int num1, String op, int num2) throws InterruptedException {
if (op == "+") {
System.out.println(String.valueOf(num1 + num2));
}
if (op == "-") {
System.out.println(String.valueOf(num1 - num2));
}
if (op == "*") {
System.out.println(String.valueOf(num1 * num2));
}
if (op == "/") {
System.out.println(String.valueOf(num1 / num2));
}
}
}
以下是错误:
Compilation Errors Detected
Line: 18
cannot find symbol
symbol: variable z1
location: class mathyStuff
Line: 18
cannot find symbol
symbol: variable x
location: class mathyStuff
Line: 18
cannot find symbol
symbol: variable z2
location: class mathyStuff
我目前正在使用一个名为browxy的网站,这是一个在线java编译器。是的,我知道。下载eclipse。我无法随身携带电脑,所以我改用它。
答案 0 :(得分:1)
这是一个范围问题。
你不能访问x,z1和z2,因为它们是在while循环中声明的,但是你试图在while循环之外访问它们。
您可能希望在math
循环内的if
块内移动while
函数调用。
答案 1 :(得分:0)
在java无法确认变量已定义的情况下,您实质上是在要求变量。您需要在任何while循环之外的位置预定义变量,或者在调用这些变量之前结束循环
尝试在int y = 0;
之前添加此权限:
int z1 = 0;
int z2 = 0;
另外,您在哪里定义x
?如果你的意思是字符串x,你需要在第18行写"x"
。如果你的意思是一个名为x的变量,请确保它在正确的范围内定义。事实上,我无法在任何地方找到它。
旁注:您的数学方法不能将“x”作为第二个变量的输入。它只需要“+”,“ - ”,“*”和“/”。如果您希望能够使用“x”,则需要更改数学方法。