Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 等级计算器程序_Java_Loops - Fatal编程技术网

Java 等级计算器程序

Java 等级计算器程序,java,loops,Java,Loops,我完全被这个项目困住了,在这个项目中,用户应该输入一个班级的学生人数和参加的考试人数。然后他们输入每个学生的名字,然后在一行空白处输入该学生的考试分数。该程序计算每个学生的平均成绩和相应的字母分数 这就是我到目前为止所做的: public class proj2 { public static void main(String[] args) { Scanner s = new Scanner(System.in); System.out.println("Welcome to Gr

我完全被这个项目困住了,在这个项目中,用户应该输入一个班级的学生人数和参加的考试人数。然后他们输入每个学生的名字,然后在一行空白处输入该学生的考试分数。该程序计算每个学生的平均成绩和相应的字母分数

这就是我到目前为止所做的:

public class proj2 {

 public static void main(String[] args) {
 Scanner s = new Scanner(System.in);

  System.out.println("Welcome to Gradecalculator!");

  System.out.println("Please enter the number of students:");
  int students = s.nextInt();

  System.out.println("Please enter the number of exams:");
  int exams = s.nextInt();

  int i = 0;
  int studentnumber = 1;

  int sum = 0;  
  while (i < students) {

    double average = sum/exams;

    System.out.println("Enter student " + studentnumber++ + "'s name :");
    String studentname = s.next();

    System.out.println("Enter exam scores :");

    for (; i < exams; i++) {    
     int n = s.nextInt();
     sum+=n;

     if (n < 0) {
     System.out.println("Invalid exam scores, reenter: ");      
     }
  }
  if (average <= 100 && average >= 90) {
       System.out.println("Letter grade: A");
       System.out.println(studentname + " gets 4 stars! ****");
      } if (average <= 89 && average >= 80) {
       System.out.println("Letter grade: B");
       System.out.println(studentname + " gets 3 stars! ***");
      } if (average <= 79 && average >= 70) {
       System.out.println("Letter grade: C");
       System.out.println(studentname + " gets 2 stars! **");
      } if (average <= 69 && average >= 60) {
       System.out.println("Letter grade: D");
       System.out.println(studentname + " gets 1 star! *");
      } if (average <= 59) {
       System.out.println("Letter grade: F");
       System.out.println(studentname + " gets 0 stars!");
      }
}
 }
 }
请输入学生人数: 3. 请输入考试次数: 3. 输入学生1的姓名: 山姆 输入考试分数: 80 80 80 字母等级:F 山姆得了0颗星


显然,三个80首先应该是B,所以我显然没有正确计算平均值,但我不知道为什么。

您的条件应该是这样的:

if (average <= 100 && average >=90)
if (average <= 100 & average >=90)
if(平均值=90)
不是这样的:

if (average <= 100 && average >=90)
if (average <= 100 & average >=90)
if(平均值=90)
您希望使用逻辑AND而不是按位AND

另一个问题是,在每次迭代中将
sum
重置为0,因此实际上没有累计总和


最后,平均值和所有条件的计算应在for循环之外,因为您希望在计算平均值之前读取所有输入。

您的条件应如下所示:

if (average <= 100 && average >=90)
if (average <= 100 & average >=90)
if(平均值=90)
不是这样的:

if (average <= 100 && average >=90)
if (average <= 100 & average >=90)
if(平均值=90)
您希望使用逻辑AND而不是按位AND

另一个问题是,在每次迭代中将
sum
重置为0,因此实际上没有累计总和


最后,平均值和所有条件的计算应在for循环之外,因为您希望在计算平均值之前读取所有输入。

您的条件应如下所示:

if (average <= 100 && average >=90)
if (average <= 100 & average >=90)
if(平均值=90)
不是这样的:

if (average <= 100 && average >=90)
if (average <= 100 & average >=90)
if(平均值=90)
您希望使用逻辑AND而不是按位AND

另一个问题是,在每次迭代中将
sum
重置为0,因此实际上没有累计总和


最后,平均值和所有条件的计算应在for循环之外,因为您希望在计算平均值之前读取所有输入。

您的条件应如下所示:

if (average <= 100 && average >=90)
if (average <= 100 & average >=90)
if(平均值=90)
不是这样的:

if (average <= 100 && average >=90)
if (average <= 100 & average >=90)
if(平均值=90)
您希望使用逻辑AND而不是按位AND

另一个问题是,在每次迭代中将
sum
重置为0,因此实际上没有累计总和


最后,平均值和所有条件的计算应该在for循环之外,因为您希望在计算平均值之前读取所有输入。

您在这里犯了一个小错误

if (average <= 100 & average >= 90)
你需要再修改一下你的代码。您需要为循环声明
sum
外部
,因为每次它被重置为
0

int sum = 0;
for (; i < exams; i++) {  
   int n = s.nextInt();
   sum+=n;
}
double average = sum/exams;
int和=0;
对于(;i<考试;i++){
int n=s.nextInt();
总和+=n;
}
双倍平均=总和/考试;

您在这里犯了一个小错误

if (average <= 100 & average >= 90)
你需要再修改一下你的代码。您需要为
循环声明
sum
外部
,因为每次它被重置为
0

int sum = 0;
for (; i < exams; i++) {  
   int n = s.nextInt();
   sum+=n;
}
double average = sum/exams;
int和=0;
对于(;i<考试;i++){
int n=s.nextInt();
总和+=n;
}
双倍平均=总和/考试;

您在这里犯了一个小错误

if (average <= 100 & average >= 90)
你需要再修改一下你的代码。您需要为
循环声明
sum
外部
,因为每次它被重置为
0

int sum = 0;
for (; i < exams; i++) {  
   int n = s.nextInt();
   sum+=n;
}
double average = sum/exams;
int和=0;
对于(;i<考试;i++){
int n=s.nextInt();
总和+=n;
}
双倍平均=总和/考试;

您在这里犯了一个小错误

if (average <= 100 & average >= 90)
你需要再修改一下你的代码。您需要为
循环声明
sum
外部
,因为每次它被重置为
0

int sum = 0;
for (; i < exams; i++) {  
   int n = s.nextInt();
   sum+=n;
}
double average = sum/exams;
int和=0;
对于(;i<考试;i++){
int n=s.nextInt();
总和+=n;
}
双倍平均=总和/考试;


谢谢,我做了更改,但当我为考试分数输入三个100分时,我收到的信息是字母分数为F。我不明白为什么它不能正确计算平均值。啊哈。这是有道理的。好的,我现在在循环外声明了变量,当我输入三个80分时,我的新输出是:字母等级:F约翰得到0颗星!字母等级:F约翰获得0颗星!字母等级:B约翰获得三颗星!***-很明显,我的循环被搞砸了。但至少现在它正确地计算了总和。@sam如果你把你的
If
条件移到for循环之外,就像我建议的那样,你应该只得到一个`字母等级:…'的输出。“哦,是的,这是我应该提到的另一件事。当我把If条件移到循环之外时,它告诉我“平均”“无法解析为变量。我是否在错误的位置声明了平均变量?@sam如果要在循环外使用
average
,应该在循环外声明。谢谢,我做了那个改变,但当我为考试分数输入三个100分时,我得到的信息是字母分数是F。我不明白为什么它不能正确计算平均值。啊哈。这是有道理的。好的,我现在在循环外声明了变量,当我输入三个80分时,我的新输出是:字母等级:F约翰得到0颗星!字母等级:F约翰获得0颗星!字母等级:B约翰获得三颗星!***-很明显,我的循环被搞砸了。但至少现在它正确地计算了总和。@sam如果你把你的
If
条件移到for循环之外,就像我建议的那样,你应该只得到一个`字母等级:…'的输出。“哦,是的,这是我应该提到的另一件事。当我把If条件移到循环之外时,它告诉我“平均”“无法解析为变量。我是否在错误的位置声明了平均变量?@sam如果要在循环外使用
average
,应该声明它