2017-04-21 8 views
0

私はJavaにとって非常に新しいです。だから私は、スコアの入力を受け取るスクリプトを作成し、このスコアに基づいて出力としてマークを与えます。私の問題は、複数のスコアの入力を可能にするためにコードを繰り返したいのですが、動作させることができません。ループの問題

編集:回答のメソッドを使用してみましたが、正しく取得できません。誰かが私のコードにループを実装することは可能でしょうか? は、ここに私のコードです:私は考えることができる

import java.util.Scanner; 
public class week4 
{ 
public static void main(String[] args) 
    { 

     { 

    String studentname; 
    int mark = 100; // listing maximum mark 
    Scanner inText = new Scanner(System.in); 
    System.out.print("Please enter the name of the student >> "); 
    studentname = inText.nextLine(); 
    Scanner inNumber = new Scanner(System.in); 
    System.out.print("Please enter mark for student " + studentname + " out of 100 >> "); 
    mark = inText.nextInt(); 
    if(mark <50) System.out.print("The grade for " + studentname + " is F "); 
    else if(mark <65) System.out.print("The grade for " + studentname + " is P "); 
    else if(mark <75) System.out.print("The grade for " + studentname + " is C "); 
    else if(mark <85) System.out.print("The grade for " + studentname + " is D "); 
    else System.out.print("The grade for " + studentname + " is HD2"); 
     } 
    } 
} 
+0

(I = 1をint型のため、 'ループなどにあなたがそれを必要回数とのforループ内で、あなたのコードをラップ;私は= 10 <;私は++) {} 'ループを10回繰り返します。スキャナ入力の上、つまりScanner inText = new Scanner(System.in)の上にループを追加します; –

+0

あなたの目標に' while'ループを使用することができます。 whileループドックを見てください。 –

答えて

0

まず、)のはcalcGrade(と呼ばれる別の方法にメインロジックをリファクタリングしましょう:

public void calcGrade() { 

    String studentname; 
    int mark = 100; // listing maximum mark 
    Scanner inText = new Scanner(System.in); 
    System.out.print("Please enter the name of the student >> "); 
    studentname = inText.nextLine(); 
    Scanner inNumber = new Scanner(System.in); 
    System.out.print("Please enter mark for student " + studentname + " out of 100 >> "); 
    mark = inText.nextInt(); 
    if(mark <50) System.out.print("The grade for " + studentname + " is F "); 
    else if(mark <65) System.out.print("The grade for " + studentname + " is P "); 
    else if(mark <75) System.out.print("The grade for " + studentname + " is C "); 
    else if(mark <85) System.out.print("The grade for " + studentname + " is D "); 
    else System.out.print("The grade for " + studentname + " is HD2"); 
} 

私たちは、このメソッドを呼び出すと、それは、その後、System.inから新しい生徒の名前&スコアをロードグレードを計算しますそれを印刷する。

さて、次の部分はループになります。

Javaには/ while/do-whileの3種類のループがあります。

ループを繰り返すタイミングを正確に知っている場合は、「for」を使用できます。

など。あなたは、あなたがそのようなコードを書くことができ、あなたのクラスで唯一の10の学生があります知っている:

for (int i = 0; i < 10; i++) { 
    calcGrade(); 
} 

あなたが時間を知りませんが、あなたがループを終了するには、正確な条件があることがわかっている場合は、使用することができますしばらくしています。 whileとdo-whileの違いは、最初に条件チェックを実行してから内部ロジックを実行し、常に内部ロジックを実行してから条件をチェックすることです。

など。 System.inから文字列 "YES"を取得すると、ループを続行したいと考えています。

System.out.println("Please input the first student info, YES or NO?"); 
Scanner inText = new Scanner(System.in); 
while ("YES".equals(inText.nextLine()) { 
    calcGrade(); 
    System.out.println("Continue input the next student info, YES or NO?"); 
} 

また、クラスに少なくとも1人の人がいることがわかっている場合は、do-whileを使用できます。

Scanner inText = new Scanner(System.in); 
do { 
    calcGrade(); 
    System.out.println("Continue input the next student info, YES or NO?"); 
} while ("YES".equals(inText.nextLine()); 

それはあなたのために明らかだホープス;)

0

最も簡単なwwayは学生というクラスを作成し、あなたがしたいか、単に取るコンストラクタを持っている場合、名前の変数、被験者、スコアなどはセッターとゲッターを持っていることですそれらの入力に次に、computeGrade()のようなメソッドがあります。あなたが何かをしたいときはいつでも、この学生クラスのインスタンスを作成します。

puclic class Student{ 

public String mName; 
public String mSub1; 
. 
public int m_scoreSub1; 
. 
. 
public computeScore(int m_score){ 
* your logic goes here (the if else one) 
} 
} 

今すぐクラスをインスタンス化してください。