-2

このコードを使用して、x が y よりも大きい場合は答えを合計し、x が y よりも大きくない場合はそれを減算する簡単な if/else ステートメントを作成しました。何らかの理由で実行時エラーが発生します。

誰でもこれで私を助けることができますか?コードは次のとおりです。

import java.util.Scanner;

public class calculation
{
    public static void main(String[] args)
    {      
        int x,y,answer;

        Scanner kb = new Scanner(System.in);
        System.out.println(" Enter x & Y " );

        x = kb.nextInt();
        y = kb.nextInt();

        if (x > y) {    
            answer = (x + y);
        }  
        else if (x < y) {
            answer=(x-y);
        }

    }
}

これは私が得るメッセージです: 警告: ローカル変数の回答は決して読み取られません

4

2 に答える 2

2

発生しているエラーが次のような場合:

Foo.java:23: error: variable answer might not have been initialized
        System.out.print("answer is " + Integer.toString(answer));

問題は、answer値が設定されていない可能性があることであり、コンピューターはあきらめて、おそらくゴミを返す代わりにエラーメッセージを出力します。

値を設定できanswerないのはなぜですか。ifに設定answerし、設定した場合; しかし、もし? その場合に何をすべきかをコンピューターに指示するものは何もありません。プログラムに入力した特定の入力と同じではない可能性がありますが、Java はエラー メッセージを表示します。これは、後で誰かが最初に入力したときにエラーが発生するよりも、エラーを簡単に修正できるようになったときにエラーが発生することを期待してのことです。と の等しい値を入力します。x+yx>yx<yanswer=x-yx=yxyxy

、またはに変更x>yするか、3 番目のケースを追加することで、これを修正できます。x>=yx<yx<=yx==y


あなたが得ている警告が

Warning: The local variable answer is never read

answer次に、メソッドの最後にこれを追加するなど、何らかの方法で使用するステートメントを追加する必要があります。

System.out.print("answer is " + Integer.toString(answer));

ただし、これは単なる警告であり、エラーではないことに注意してください。メッセージが表示されても問題なく動作するはずです。試してみてください。もちろん、answer警告が示すようanswerに、現在のコードでは決して読み取られないため、どの値が取得されるかを確認することはできません。

于 2013-02-06T01:46:45.923 に答える
0
int x,y, answer;

Scanner kb = new Scanner(System.in);

  System.out.println(" Enter x & Y " );

  x= kb.nextInt();
  y= kb.nextInt();

  if (x>y)
    answer= (x+y);
  else
    answer=(x-y);
System.out.println("the answer is " + answer);

また、スキャナーを使用するため、java.util.Scanner をインポートする必要があります。

于 2013-02-06T01:55:21.493 に答える