Java 如何使用循环计算平均分数
Java how to compute average scores using loops
我需要在 Java 中编写一个程序来计算 4 个学生的平均分数。学生将输入他们的 4 个分数,完成后他们将输入 -1 来计算平均值。完成后,程序需要转到学生 2,依此类推。最后,它应该显示 4 名学生平均考试成绩中的最高平均分。这是 运行:
时的样子
学生 1
输入你的分数:100
输入你的分数:90
输入你的分数:80
输入你的分数:70
输入你的分数:-1 * 一旦学生输入 -1,它应该计算平均值
平均分 = 85。
学生 2
输入你的分数:90
等
等
我的代码的问题是平均数只对第一个学生是正确的。当我输入 -1 以获得第二个学生的平均值时,计算不正确。我们只允许使用循环。我得到的唯一提示是我们应该编写一个迭代 4 次的外部循环,编写一个只要学生有分数要输入就循环的内部循环,内部循环提示用户输入他们的最后一个分数或-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;
}
}
}
}
您没有明确提出问题,所以我会尽量遵守 "set me in the right direction" 部分。
我建议将循环结构重新格式化为更简洁的结构,如下所示:
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);
希望这足以给你一些指点。
编辑:忘记处理 total
因此,您希望迭代遍历所有输入并只记住最大的一个。创建一个整数变量 max 并在每个学生之后,根据需要更改它。 (默认为零 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;
}
}
}
我需要在 Java 中编写一个程序来计算 4 个学生的平均分数。学生将输入他们的 4 个分数,完成后他们将输入 -1 来计算平均值。完成后,程序需要转到学生 2,依此类推。最后,它应该显示 4 名学生平均考试成绩中的最高平均分。这是 运行:
时的样子学生 1
输入你的分数:100
输入你的分数:90
输入你的分数:80
输入你的分数:70
输入你的分数:-1 * 一旦学生输入 -1,它应该计算平均值
平均分 = 85。
学生 2
输入你的分数:90
等
等
我的代码的问题是平均数只对第一个学生是正确的。当我输入 -1 以获得第二个学生的平均值时,计算不正确。我们只允许使用循环。我得到的唯一提示是我们应该编写一个迭代 4 次的外部循环,编写一个只要学生有分数要输入就循环的内部循环,内部循环提示用户输入他们的最后一个分数或-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;
}
}
}
}
您没有明确提出问题,所以我会尽量遵守 "set me in the right direction" 部分。
我建议将循环结构重新格式化为更简洁的结构,如下所示:
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);
希望这足以给你一些指点。
编辑:忘记处理 total
因此,您希望迭代遍历所有输入并只记住最大的一个。创建一个整数变量 max 并在每个学生之后,根据需要更改它。 (默认为零 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;
}
}
}