-1

problem1 オブジェクトでメソッド「getUnknownsAccel」を呼び出すと、何らかの理由でメソッド内の「if」ステートメントが実行されず、変数の値が取得されません。

PhysicsProblem problem1 = new PhysicsProblem(accel, vI, vF, t, deltaX);

    System.out.println("Which variable are you solving for? ");
    String solveFor = scan.next();


    // after receiving solveFor input, assesses data accordingly

    if (solveFor.equalsIgnoreCase("acceleration"))
    {
        System.out.println("Solving for Acceleration!");
        System.out.println("Are there any other unknowns? (enter 'none' or the name " +
                "of the variable)");
        missingVar = scan.next();
        problem1.setMissingVar(missingVar);
        do
        {
            problem1.getUnknownsAccel();
            System.out.println("Are there any other unknowns? (enter 'none' or the name " +
                    "of the variable)");
            missingVar = scan.next();               //// change all these in the program to scan.next, not scan.nextLine
        }
        while (!missingVar.equalsIgnoreCase("none") || !missingVar.equalsIgnoreCase("acceleration"));

        if (missingVar.equals("none"))
        {
            // Write code for finding solutions
            System.out.println("Assuming you have given correct values, the solution is: ");
        }
    }

不明な他の変数の名前を取得するために do/while ループを使用した後、次のクラス ファイルから getUnknownsAccel メソッドを呼び出します。

public void getUnknownsAccel()
{
    //-----------
    // checks for another unknown value that is not accel
    //-----------
    if (missingVar.equalsIgnoreCase("time"))
    {
        System.out.println("Please enter the value for time: ");
        t = scan.nextDouble();
        while (t <= 0 || !scan.hasNextDouble())
        {
            System.out.println("That is not an acceptable value!");
            t = scan.nextDouble();
        }
    }       

}

この問題のために、プロンプトが表示されたときに、ユーザーが不明として「時間」を入力すると仮定しましょう。私のコードがスキャン関数を実行して時間変数の値を取得しない理由は何ですか? 代わりに、プログラムは system.out 関数「他に不明な点はありますか...」を繰り返すだけです。

4

1 に答える 1

2

スキャン後、missingVar を scan.next() に設定しますが、何もしません。ループは続きます。

missingVar = scan.next();

行を追加

getUnknownsAccel();

別の問題として、後で処理する必要があることに注意してください。missingVar はローカルです。getUnknownsAccel() でアクセスするには、宣言を次のように変更する必要があります。

public void getUnknownsAccel(String missingVar){
}

代わりに getUnknownsAccel(missingVar); を使用します。

于 2013-07-13T18:07:10.523 に答える