0

最近、計算機になるプログラムを作ったのですが、3 つのエラーが発生しました。コードは次のとおりです。

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

私は現在、オンラインの Java コンパイラである browxy という Web サイトを使用しています。そして、はい、私は知っています。エクリプス ダウンロード. どこに行くにもパソコンを持ち運べないので、代わりにこれを使っています。

4

2 に答える 2

1

これはスコープの問題です。

x、z1、z2 は while ループ内で宣言されているためアクセスできませんが、while ループの外でアクセスしようとしています。

mathおそらく、関数呼び出しをループ内のifブロック内に移動したいと思うでしょう。while

于 2015-05-06T22:09:39.523 に答える
0

基本的に、変数が定義されていることをJavaが確認できない状況で、変数を要求しています。これらの変数を呼び出す前に終了する while ループまたは if ループの外側の場所に変数を事前定義する必要があります。
これを の直前に追加してみてくださいint y = 0;:
int z1 = 0; int z2 = 0;
また、どこで定義しますxか? 文字列 x を意味する場合は、18 行目に記述する必要があります。x"x"という名前の変数を意味する場合は、正しいスコープで定義されていることを確認してください。そのままでは、どこにも見つかりません。

補足: 数学メソッドは、2 番目の変数の入力として "x" を使用できません。「+」、「-」、「*」、および「/」のみを取ります。「x」を使用できるようにしたい場合は、計算方法を変更する必要があります。

于 2015-05-06T22:17:33.980 に答える