1

私はJavaが初めてで、あらゆる場所を見ましたが、単純な概念がわかりません。

2 つの変数を int として宣言します。2 つの変数をすべてのメソッドに対してグローバルにする必要があります。最初のメソッドでは、ユーザー入力から最初の変数の値を取得したいと考えています。次に、その新しい値を使用可能にし、認識して、2 番目のメソッドで呼び出します。ただし、最初のメソッドが終了するたびに、変数の値は 0 に戻され、2 番目のメソッドは、最初のメソッド入力でユーザーが指定した値を検出しません。私は何を間違っていますか?変数を別の方法で宣言する必要がありますか? メソッドを別の方法で宣言する必要がありますか? ご協力いただきありがとうございます!

import acm.program.*;

public class FindRange extends ConsoleProgram {

int num1;
int num2;

public void run() {

    println("This program finds the largest and smallest numbers.");

    getNum1();
    getNum2();
    // getNumUntilZero();
}

public void getNum1() {

    int num1 = readInt("?:");
    if (num1 == 0) { //do not accept 0 for first number
        println("Please try again without 0.");
        getNum1();
    }

}

public void getNum2() {
    int num2 = readInt("?:");
    if (num2 == 0) { //if 2nd number is 0, print 1st num as high and low nums
        println("Biggest number:" + num1);
        println("Smallest number:" + num1);

    }
}
}
4

3 に答える 3

0

int num1 = readInt("?:");メソッド getNum1() 内で実行すると、そのローカル変数は stack に格納されます。 参照したいグローバル変数(インスタンス変数として宣言)を参照していない

したがって、次のようにします。

public void getNum1() {
    num1 = readInt("?:");
    if (num1 == 0) { // do not accept 0 for first number
        println("Please try again without 0.");
        getNum1();
    }
}

public void getNum2() {
     num2 = readInt("?:");
    if (num2 == 0) { // if 2nd number is 0, print 1st num as high and low nums
        println("Biggest number:" + num1);
        println("Smallest number:" + num1);
    }
}
于 2013-07-26T07:45:02.593 に答える