0

ユーザーがマークを入力するプログラムを作成しています.100を超えるとプログラムが停止しますが、100を超える値がMarks変数に割り当てられるのを止めることはできません...

Scanner scan = new Scanner(System.in);
Int Marks = 0;

while (Marks >= 0 && Marks <= 100) {
        System.out.println("Enter Students Test Marks Here");

        Marks = input.nextInt();
}

// Output Test
System.out.println("The Marks variable value is " +Marks);
4

3 に答える 3

0

あなたは逆の条件を持っています!条件が真になるまでではなく、条件が真であるwhile実行されます...したがって、代わりに行う必要があるのは次のとおりです。

int marks = -1; // Start with an "illegal" marks value

while ((marks<0) || (marks>100)) { // while we have an illegal mark ...
    System.out.println("Enter Students Test Marks Here (0..100)");

    marks = input.nextInt(); // ... ask for a new one
}

この後、marks 変数には 0 から 100 までの有効な数値が含まれます。

編集:

気がついた...あなたは、ユーザーが正しい値を入力するまでユーザーにプロンプ​​トを表示することについては質問しませんでしたが、間違った値を入力するまでプログラムを実行し、Marks変数への割り当てを単に防止しているだけです...それが本当にあなたである場合その後、これを行うことができます:

int marks = 0;

while (true) { // Just keep running
    System.out.println("Enter Students Test Marks Here (<0 or >100 to quit)");
    int newMark = input.nextInt();
    if ((newMark<0) || (newMark>100)) break; // Skip out of while loop
    marks = newMark; // Only happens if newMark is between 0 and 100
}

while ループだけでなく、それが呼び出された関数を終了するために、break部分をに置き換えることもできます。また、プログラムをすぐに終了したい場合は、 に置き換えることもできます。returnSystem.exit(0)

しかし、秘訣は、一時変数を使用して、入力をマークに割り当てる前にチェックすることです。

(ところで:慣例として、Javaの変数名は通常小文字で始まります...)

于 2012-12-02T18:01:43.560 に答える
0

100 より大きい値を入力した瞬間、あなたは中にいます:

while (Marks >= 0 && Marks <= 100) {
    System.out.println("Enter Students Test Marks Here");

    Marks = input.nextInt();}

したがって、値が割り当てられMarks、それがwhile停止するため、最後の行に出力されます。

System.out.println("The Marks variable value is " +Marks);

考えられる解決策は次のとおりです。

boolean done = true;
int marks;
while(done == true){
    System.out.println("Enter Student Test Marks Here");
    if(input.nextInt() <= 0 || input.nextInt() >= 100){
        done = false;
    }else{
        marks = input.nextInt();
    }
}

System.out.println("The Marks variable value is " + marks);
于 2012-12-02T15:13:24.467 に答える
0

これはどうですか?

         Marks = input.nextInt();
 while (Marks >= 0 && Marks <= 100) {
    System.out.println("Enter Students Test Marks Here");

    Marks = input.nextInt();
}
于 2012-12-02T15:38:18.553 に答える