-4

次の評価ポリシーを使用して、クラスの評価プログラムを作成する必要があります。

1.クイズは2問あり、それぞれ10点満点で採点されます。

2.中間試験と期末試験があり、それぞれ100点満点で採点されます。

3. 期末試験は成績の 50%、中間試験は 25%、2 つの小テストを合わせると合計 25% になります。(クイズのスコアを正規化することを忘れないでください。)

レターグレードは次の基準に基づいて与えられます: 90 – 100 A
80 – 89 B 70 – 79 C 60 – 69 D 0 – 59 E

このプログラムは、テキスト ファイルから学生のスコアを読み取り、学生の記録を出力します。この記録は、名前、2 つのクイズと 2 つの試験のスコア、およびコース全体と最終的な成績の学生の平均数値で構成されます。学生レコードのクラスを定義して使用するとします。すべてのスコアは整数で、学生名は 10 文字以内で構成されます。出力ファイルを正当化する必要があります。

これはもともとインストラクターによって与えられたものです。どこにスターを付けるべきかわかりません

import java.until.*;
import java.io.*;

public class Assign7{
   public static void main(String[] args)throws Exception{
    Record.setGP(1.25, 1.25, 0.25, 0.50);

 Scanner myIn = new Scanner( new File("scores.txt") );

 public static void main getLetterGrade  
   if (finalScore > 90)  
       letter = 'A'; 
  else if (finalScore > 80) 
     letter = 'B';
  else if (finalScore > 70)  
     letter = 'C';
  else if (finalScore > 60)
     letter = 'D';
  else  
     letter = 'F';

    System.out.println( myIn.nextLine() +"  avg  "+"letter");

    while( myIn.hasNext() ){
       Record myR = new Record(myIn.next(), myIn.nextInt(), myIn.nextInt(), myIn.nextInt(),
myIn.nextInt());

       System.out.println( myR );

    } 
  }
}
4

2 に答える 2

8

ここまで行きましょう:

// Why not "class" (lower case)?
// Should "class Assign7" be "public" (is it the main class in the module)?
// Did you put any "import" statements above this?
Class Assign7{

   // Do you want to declare any member data before you start your "main()" function?
   public static void main(String[] args)throws Exception{

   // Is "Record.setGP()" a "static method"?
   Record.setGP(1.25, 1.25, 0.25, 0.50);

  // Isn't this class-wide data?  If so, shouldn't you put it *above* "main()"?    
  int quiz1, quiz2;
  int tMidterm, tFinal,tQuiz
  int midterm = 0;
  int finalExam = 0;
  String name;
  char grade;


  // Do you really want to just bomb out of the program if this fails?
  Scanner myIn = new Scanner( new File("scores.txt") );

   // Whoa!!!!  Why are we starting a new function, *inside of "main()"*?!?!
   void getScore()  
   {  
   tQuiz = ((quiz1 + quiz2)/20)*.25;  
   tMidTerm = (midTermExam/100)*.25;  
   tFinal = (finalExam/100)*.50;  
   finalScore = tQuiz + tMidTerm + tFinal;  
   }

   // It looks like we're starting a new function here, too.
   // Where's your parenthesis and curly brace after "getLetterGrade"????  
   void getLetterGrade  


   if (finalScore >= 90)  
   {  
   grade = 'A';  
   }  

   // Supposing the grade was "99"?  
   // Would the student get a "B" here?  Or even a "D" below???
   if (finalScore >= 80)  
   {  
   grade = 'B';  
   }
   ...

提案:

  1. 「コンパイル」するだけの最小の最小限のプログラムを作成します。

  2. 一度に1つ追加します。変更が機能することを確認します。

  3. 完全な解決策への「赤ちゃんのステップ」を取ります。

  4. 必要に応じて、特定の問題に関する特定の質問を投稿してください。

于 2012-06-28T20:41:29.063 に答える
7

コードに多くの問題があり、Java構文をまったく理解していないようです。mainの内部でメソッドを定義しようとしないでください。それらはメインの外側で定義する必要があります。

どこから始めればよいのかよくわからないので、ひどく変更する必要があることを1つ提案します。

if (finalScore >= 90)  
{  
grade = 'A';  
}  
if (finalScore >= 80)  
{  
grade = 'B';  
}
# etc...

と言いfinalScoreます100。次に、最初の条件ifが評価されtruegrade割り当てられ'A'ます。次に、次のifステートメント:100は80より大きいため、これも。と評価されtrueます。問題がわかりますか? gradeに再割り当てされ'B'ます。

ドキュメントを読んで、ステートメントがどのように役立つかを理解してelse ifくださいelsehttp ://docs.oracle.com/javase/tutorial/java/nutsandbolts/if.html (例は、実際に成績を割り当てる方法であり、あなたが抱えている正確な問題です。取りかかっている!)

于 2012-06-28T20:49:32.753 に答える