2017-04-06 6 views
1

私は現在、Pre-AP Computer Scienceクラスに在籍しています。私たちの先生は、今晩深夜までに私たちにプロジェクトを割り当てました。このプロジェクトでは、あなたの名前が何であるか、入力した成績の数、成績を尋ね、成績の平均を求め、あなたの名前とともに文字値(例えばA、B、Cなど)を返すプログラムを作成する必要があります例えば「Iqbal、Noor」)。私は一見すべてのコードがうまく動いていて、私が成績を入力したときに限界を超えているだけのエラーでした。しかし、先生は、このエラーを修正する唯一の方法は、ループを巨大にして、その中のコード。それは私に意味をなさないので、そうであれば誰か説明してもらえますか?forループとJavaでの配列を使用した最終グレードの計算

そうでない場合は、どうすればいいのか教えてください。私は誰かが私に答えを与えるのが好きではなく、むしろ私がこの問題をどのように進めることができるか考えていく過程で私を導きます。

import java.util.*; 
public class Tester { 
public static void main (String[] args){ 
    //Prompt for first 
    //Prompt for last 
    //Prompt for # of assgmts to be averaged 
    //for-loop = prompt to enter # grade until all grades are entered (use []) 
    //loop through array again to calculate average 
    //print info 
    //prompt for multiple names and grades 
    Scanner kbInput = new Scanner(System.in); 
    System.out.println("How many students will you be entering?"); 
    int numOfStudents = kbInput.nextInt(); 
    String[] Students = new String[numOfStudents]; 

    int k; 
    for(k = 0; k < Students.length; k++){ 
     System.out.println("Enter your first name."); 
     String first = kbInput.next(); 
     System.out.println("Enter your last name."); 
     String last = kbInput.next(); 
     Students[k] = last + ", " + first; 
    } 

    String finalGrade = ""; 
    System.out.println("How many grades will you be entering?"); 
    int numOfGrades = kbInput.nextInt(); 
    int[] Grades = new int[numOfGrades]; 
    int sum = 0; 
    int j; 
    for (j = 0; j < numOfGrades; j++){ 
     System.out.println("Enter your grades."); 
     Grades[j] = kbInput.nextInt(); 
     sum+=Grades[j]; 
    } 
    int average = sum/numOfGrades; 
     if((average >= 90) && (average <= 100)){ 
      finalGrade = "A"; 
     } 
     else if((average >= 80) && (average < 90)){ 
      finalGrade = "B"; 
     } 
     else if((average >= 75) && (average < 80)){ 
      finalGrade = "C"; 
     } 
     else if((average >= 70) && (average < 75)){ 
      finalGrade = "D"; 
     } 
     else if(average < 70){ 
      finalGrade = "F"; 
     } 
     String[] letterGrade = new String[numOfStudents]; 
     int count; 
     for(count = 0; count < numOfStudents; count++){ 
      letterGrade[count] = finalGrade; 
     } 
    } 
} 

EDIT:ここ

は、私がこれまで持っているコードです

  1. はテスターと呼ばれる単一のクラスでFinalGradeと呼ばれる新しいJavaプロジェクトを作成します。ここではプロジェクトの方向があります。
  2. ユーザーに生徒の名字を入力させ、その後に生徒の姓を入力するプロンプトが表示されます。
  3. 平均化する割り当ての数を入力するようにユーザに促します(例6)。
  4. for-loopを使用して、学生に割り当てられた正確な数が入力されるまで、ユーザーに数値の等級(整数のみ)を入力するように促します。注:グレードは配列に格納する必要があります。
  5. グレードの配列をループバックして、入力したグレードの平均を計算します。
  6. 画面に次の情報を(表示された順序で)印刷してください。 a。学生の姓 b。学生の氏名 c。学生の最終成績(レターグレードではなく数値として表示される) 出力例... ハワード、デレク -

越え... 1は、複数の学生や成績の入力を可能にするアプリケーションを変更します。

+0

あなたの成績には何を入力しようとしていますか? – Omore

+0

あなたはあなたの「学年」とあなたの「学生」の間に関連性がありません。だから、すべての生徒が同じ学年に就きます!あなたの先生が意味することは、 'numberOfStudents'回実行される大きな外側のforループを作ることです。このforループでは、各* 1人の生徒の名前と成績を尋ねます。その後、次の生徒に続けます。 Jamesさんと1人の学生の成績を保持する「Student」クラスの作成について考えてください –

+0

あなたの特定の問題に関連しないアドバイス:コードをメソッドに分割します。問題を特定し、コードを読みやすくし、責任を分担させ(* "分裂&征服" *)、...最も重要なことは、コードを設計して書くことがより簡単になることです。 – domsson

答えて

1

ポイントを使用してグレードを評価している場合は、可能なポイントを合計して得たポイントを加算し、次に分割して小数点を見つけます。その製品に100を掛けてください。その後、Math.round()を使用して、成績をラウンドします。

+1

がコメントされているので、コードをメソッドに分割することもお勧めします。それは対処がずっと簡単です。 – CodingNinja

関連する問題