找不到符号(计算器)

时间:2015-05-06 22:08:22

标签: java cannot-find-symbol

我最近制作了一个计算器程序,但发生了三个错误。这是代码:

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。我无法随身携带电脑,所以我改用它。

2 个答案:

答案 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”,则需要更改数学方法。