-4

我必须为具有以下评分政策的课程编写评分程序。

1.有2个小测验,每个小测验以10分计分。

2.期中考试1次,期末考试1次,每期以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. 一次添加一件事。验证更改是否有效。

  3. 采取“小步骤”来获得完整的解决方案。

  4. 根据需要发回有关特定问题的特定问题。

于 2012-06-28T20:41:29.063 回答
7

您的代码有很多问题,而且似乎根本不理解 Java 语法。不要试图在 main 的内部定义方法。它们应该在 main 之外定义。

我真的不知道从哪里开始,所以我会建议你需要彻底改变的一件事:

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

finalScore100。然后第一个条件if将评估为true并将grade被分配'A'。然后下if一条语句: 100 大于 80 所以这也计算为true。你看到问题了吗? grade将被重新分配给'B'

请阅读文档以了解此处else ifelse说明如何帮助您:http: //docs.oracle.com/javase/tutorial/java/nutsandbolts/if.html (示例是如何实际分配成绩,您的确切问题是工作中!)

于 2012-06-28T20:49:32.753 回答