先输入学生人数,再挨个输入学生分数,最后求平均分。分数在0到100间,超了要报错并重新录入。例如:
输入学生人数:3
输入学生一成绩:50
输入学生二成绩:110
错误!请重新输入。。
输入学生二成绩:50
输入学生三成绩:50
平均分为:50
现在遇到的问题是没法报错,且每次成绩输入都是显示输入学生一的成绩,没有后面的。
求各位帮助
该回答内容部分引用GPT,GPT_Pro更好的解决问题
解决这个问题的思路是:
以下是具体的代码实现:
// 定义学生分数变量
int score;
// 初始化总分数
int totalScore = 0;
// 输入学生人数
int num;
Scanner reader = new Scanner(System.in);
System.out.println("请输入学生人数:");
num = reader.nextInt();
// 进行循环输入学生分数
for(int i=1;i<=num;i++){
System.out.println("请输入学生"+i+"成绩:");
// 判断是否超出0-100之间的范围,如果超出则报错并重新录入
while(true){
score = reader.nextInt();
if(score<0||score>100){
System.out.println("错误!请重新输入。");
}else{
// 计算总分数
totalScore += score;
break;
}
}
}
// 计算平均分数并打印出来
double avgScore = (double)totalScore/num;
System.out.println("平均分为:"+avgScore);
如果回答有帮助,望采纳。
这个是对chatGPT回答的修改
import java.io.*;
import java.util.*;
public class HelloWorld {
public static void main(String []args) {
Scanner reader = new Scanner(System.in);
// 定义学生分数变量 记录总分数 保存学生人数
int score,sum = 0,num;
// 输入学生人数
System.out.println("请输入学生人数:");
num = reader.nextInt();
// 进行循环输入学生分数
for(int i=1;i<=num;){
System.out.println("请输入学生"+i+"成绩:");
score = reader.nextInt();
// 判断是否超出0-100之间的范围,如果超出则报错并重新录入
if(score<0||score>100){
System.out.println("输入错误!");
continue;
}
i++;
// 计算总分数
sum += score;
}
// 计算平均分数并打印出来
double avgScore = (double)sum/num;
System.out.println("平均分为:"+avgScore);
}
}
代码:
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int sum = 0;
int countStu;
while(true){
System.out.print("请输入学生人数:");
countStu = scanner.nextInt();
boolean flag = true;
for (int i = 1; i <= countStu; i++) {
System.out.print("输入学生"+i+"的成绩:");
int temScore = scanner.nextInt();
if (temScore < 0 || temScore > 100){
System.out.println("错误!请重新输入。。");
flag = false;
sum = 0;
break;
}
sum += temScore;
}
if (!flag){
continue;
}
break;
}
System.out.println("平均分为:" + (sum / countStu));
}
结果:
请输入学生人数:3
输入学生1的成绩:100
输入学生2的成绩:102
错误!请重新输入。。
请输入学生人数:3
输入学生1的成绩:100
输入学生2的成绩:100
输入学生3的成绩:100
平均分为:100
Process finished with exit code 0