2017-10-10 9 views
-1

私は現在、クラス管理システムを作成することを選択したOレベルプロジェクトのプログラムに取り組んでいます。私のメソッドクラスでは、私のプログラムのさまざまな機能を制御するさまざまなメソッドがあります。例えば、学生の名前を収集するメソッドや、学生の等級のヒストグラムを表示するメソッドです。しかし、私は自分の方法の欠陥を発見しました。これは、生徒の名前を1つずつリストするメソッドです(このメソッドの前に実行されるメソッドの配列に保存されます)。生徒のマークを尋ねます。ここで、ユーザは任意の数を入力することができるが、これは通常、0〜100の数値グレードを考慮すると不都合である。私は次のコードを試しましたが、私は窮地に瀕しています。コードは実際には100以上のマークを入力するのを止めますが、ユーザーが正しいマークを再入力できるようにする代わりに、次の生徒にスキップして前の生徒にマークを付けません。以下は、コードと言われている。値をスキップしないためにユーザーの入力が必要です。

//mark input 
public void markin() { 
    System.out.println("====================================="); 
    System.out.println("Please enter the mark of the students"); 
    System.out.println("====================================="); 
    for (int g = 0; g != marks.length; g++) { 
     System.out.println(names[g]); 
     marks[g] = Keyboard.readInt(); 
     while(marks[g]<0||marks[g]>100){ 
      System.out.println("Kindly enter a number that is less than 100"); 
      break; 
     } 
    } 
} 

ヘルプは非常に高く評価されるだろうと、私の英語は非常に良いではない場合:)事前に 謝罪をありがとうございました。

+0

二私は...あなた休憩を見ることができる問題あなたが実際に入力を求めなければならない無限ループ、 'readInt'は' Scanner'の 'nextInt'に似ています。これは" Enter "を押して新しい値を入力すると実際には機能しません。 – Makoto

答えて

0

あなたはほとんどそれを得た有効であるとき、ループはとにかく終わるだろうとして、ループを壊さない - あなたが必要あなたのwhileループで読み込みせずに読み込むことができます。また、doループは初期の無効な値を設定しない方が適切です。

//mark input 
public void markin() { 
    System.out.println("====================================="); 
    System.out.println("Please enter the mark of the students"); 
    System.out.println("====================================="); 
    for (int g = 0; g != marks.length; g++) { 
     System.out.println(names[g]); 
     do { 
      System.out.println("Kindly enter a number that is less than 100"); 
      marks[g] = Keyboard.readInt(); 
     } while(marks[g]<0||marks[g]>100); 
    } 
} 
+0

ありがとうございます、あなたは命を救っています;) –

0

ループの前に許可されていない数字に[g]を設定すると、whileループのキーボード入力を確認します (whileループがない限り「tは、停止 マーク[G] = Keyboard.readInt();

と入力が

+0

ご協力ありがとうございます –

0

有効な回答は、順次配列に取り込まなければなりません。 使用前の値 にインデックス[G]をリセットするには、この単純なトリックあなたは有効なものを得るまで、あなたがマーク[G]の値を上書きします:

while(marks[g]<0||marks[g]>100){ 
     System.out.println("Kindly enter a number that is less than 100"); 
     g--; // Resetting index to previous value 
     break; 
    } 
+1

このソリューションを使用する場合、しばらくの間は必要ありません。 – Compufreak

関連する問題