Java如何使用循环计算平均分数
我需要用Java编写一个程序,计算4名学生的平均分数。学生输入4分,完成后输入-1计算平均值。完成后,程序需要转到学生2,依此类推。最后,它应该显示4个学生平均测试分数的最高平均值。以下是它运行时的外观: 学生1 输入你的分数:100 输入你的分数:90 输入你的分数:80 输入你的分数:70 输入你的分数:-1*学生输入-1后,应计算平均值 平均分=85分 学生2 输入你的分数:90 等 等 我的代码的问题是平均值只对第一个学生正确。当我输入-1以获得第二个学生的平均值时,计算结果不正确。我们只允许使用循环。我得到的唯一提示是,我们应该编写一个循环4次的外部循环,编写一个循环的内部循环,只要学生有分数要输入,内部循环就会提示用户输入他们的最后分数或-1来计算平均值。我不想你们帮我做这个项目,只是想让我走上正确的方向。我觉得我没有使用正确的循环Java如何使用循环计算平均分数,java,loops,average,mean,Java,Loops,Average,Mean,我需要用Java编写一个程序,计算4名学生的平均分数。学生输入4分,完成后输入-1计算平均值。完成后,程序需要转到学生2,依此类推。最后,它应该显示4个学生平均测试分数的最高平均值。以下是它运行时的外观: 学生1 输入你的分数:100 输入你的分数:90 输入你的分数:80 输入你的分数:70 输入你的分数:-1*学生输入-1后,应计算平均值 平均分=85分 学生2 输入你的分数:90 等 等 我的代码的问题是平均值只对第一个学生正确。当我输入-1以获得第二个学生的平均值时,计算结果不正确。我们
import java.util.Scanner;
public class TestScore
{
public static void main(String[]args)
{
double score = 0;
double totalScore = 0;
double count = 0;
double average = 0;
Scanner input = new Scanner(System.in);
System.out.println("Student 1");
System.out.printf("Enter Your Score: ");
score = input.nextDouble();
while (score != -1){
System.out.printf("Enter Your Score: ");
totalScore = totalScore + score;
score = input.nextDouble();
count++;
average = totalScore / count;
if (score == -1){
System.out.printf("Average Score = %.2f\n ",average);
count = 0;
score = 0;
totalScore = 0;
average = 0;
System.out.println("Student 2");
System.out.printf("Enter Your Score: ");
score = input.nextDouble ();
count++;
average = totalScore / count;
}
}
}
}
你还没有明确提出问题,所以我将尝试遵守“让我走上正确的方向”部分 我建议将循环结构重新格式化为更干净的结构,如下所示:
double total;
for(int student = 1; student <= 4; student++) {
System.out.printf("Student %d\n", student);
double sum = 0, count = 0;
while(true) {
System.out.printf("Enter your score: ");
double input = scanner.nextDouble();
if(input == -1) break;
sum += input;
count++;
}
total += sum;
System.out.printf("Average: %.2f\n", sum / count);
}
System.out.printf("Total: %.2f\n", total);
双倍合计;
对于(int student=1;student所以,您希望迭代地遍历所有输入,只记住最大值。创建一个整数变量max,在每个student之后,如果需要,只需更改它。(默认情况下,jn Java为零)
对于每个学生的计算,您不应该在每次迭代中检查失败的“score!=-1”条件。相反,您应该在while循环之后进行最终计算。(平均值、可能的最大值更新、重置变量等)
您还需要外部循环(在所述代码中,这些计算仅针对一名学生进行),您将以不同的方式控制该循环
此外,如果您只需要使用4个等级,您可能需要考虑使用for循环。
您可以尝试:d
public static void main (String[] args) throws java.lang.Exception
{
double average = 0;
double i = 0;
int student = 0;
boolean flag = true;
Scanner input = new Scanner(System.in);
while(flag)
{
System.out.printf("Student: ");
System.out.println(student);
System.out.print("Enter Your Score: ");
double score = input.nextDouble();
if(score!=-1){
average=average+score;
i=i+1;
}
if(score==-1){
System.out.printf("Average: ");
System.out.println(average/i);
//reset values
average = 0;
i = 0;
student=student+1;
}
if(score==-2){
//you need break the while in some moment.
flag = false;
}
}
}
你需要有一个数组来存储每个分数,然后如果你得到-1,就迭代该数组,并根据数组中的元素数计算求和的平均值。那么,你的外循环在哪里?谢谢你的回答,但是我们不允许使用数组。我想WHILE循环就是外循环。谢谢你的帮助,它可以当然有帮助。但是我们也不允许使用中断语句。我将尝试解决这个问题。哦,在这种情况下,考虑将内部代码< >而<代码>循环为<代码> do……< /COD> >。请随便问(评论)。如果你需要更多的指针,再来一次!谢谢,我会尝试一下。是的,我想我需要使用for循环。谢谢你的帮助。