JAVA代码问题!输入5名学生的成绩,并计算总成绩,平均分,最高分,最低分

下面是我编写的一段代码importjava.util.Scanner;/***输入5名学生的成绩,并计算总成绩,平均分,最高分,最低分**/publicclassTest... 下面是我编写的一段代码
import java.util.Scanner;

/**
* 输入5名学生的成绩,并计算总成绩,平均分,最高分,最低分
*
*/
public class TestScore {
public static void main(String[] args) {
//声明一个数组变量
int scores[]=new int[5];
float total=0;//总成绩
float avg=0;//平均分
int max=0;
int min=0;
//扫描器
Scanner input=new Scanner(System.in);
System.out.println("请输入5名学生的成绩:");
for(int i=0;i<scores.length;i++){
scores[i]=input.nextInt();
}
//计算总成绩,平均分,最高分,最低分
max=scores[0];
min=scores[0];
//总成绩
for(int j=0;j<scores.length;j++){
total+=scores[j];
//最高分
if(scores[j]>max);{
max=scores[j];
}
//最低分
if(scores[j]<min);{
min=scores[j];
}
}
//平均分
avg=total / scores.length;
System.out.println("总成绩是"+total);
System.out.println("最高分是"+max);
System.out.println("最低分是"+min);
System.out.println("平均分是"+avg);

}

}
问题就在于,输出后,最大值和最小值不能正确的显示,显示的是最后一个输入的成绩,求大神指导,那里有问题?
展开
 我来答
qq438669983
2014-01-25 · TA获得超过347个赞
知道小有建树答主
回答量:502
采纳率:25%
帮助的人:196万
展开全部
public static void main(String[] args) {
double scores[] = new double[5];
double total = 0;
double avg = 0;
double max = 0;
double min = 0;
int count=0;
String inputStr=null;
System.out.println("请输入5名学生的成绩:");
Scanner input = new Scanner(System.in);
while(count<5){
try{
if(count < 5){
System.out.println("请输入第"+(count+1)+"个分数:");
}
inputStr=input.nextLine();
scores[count++]=Double.valueOf(inputStr.trim());
}catch(Exception e){
if(inputStr!=null && "exit".equals(inputStr.trim())){
System.out.println("您已成功结束程序");
System.exit(0);
}
System.out.println("若想结束请输入:exit");
System.out.print("您输入的分数不是数值类型,");
count--;
}
}
input.close();
Arrays.sort(scores);
min=scores[0];
max=scores[scores.length-1];
for(double score :scores){
total += score;
}
avg=total/scores.length;
System.out.println("总成绩是" + total);
System.out.println("最高分是" + max);
System.out.println("最低分是" + min);
System.out.println("平均分是" + avg);
}

//-------------------------------------------------------------------------

public static void main(String[] args) {
Scanner input = new Scanner(System.in);
while(true){
Double[] scores = null;
double total = 0;
double avg = 0;
double max = 0;
double min = 0;
int count=1;
List<Double> inputScores=new ArrayList<Double>();
String inputStr=null;
System.out.println("请输入要统计学生的成绩(理论上可以输入无限个,前提是你有那么大的内存):");
while(true){
try{
System.out.println("请输入第"+count+++"个分数,或输入ok进行计算,离开请输入exit");
inputStr=input.nextLine();
inputScores.add((double)Double.valueOf(inputStr.trim()));
}catch(Exception e){
if(inputStr!=null && "exit".equals(inputStr.trim().toLowerCase())){
System.out.println("您已成功结束程序");
input.close();
System.exit(0);
}
if(inputStr!=null && "ok".equals(inputStr.trim().toLowerCase())){
break;
}
System.out.println("您输入的分数不是数值类型,");
System.out.println("若想结束请输入exit ,若想计算结果请输入ok");
count--;
}
}
if(inputScores.size()==0){
System.out.println("您没有输入学生成绩,无数据可统计,程序结束。");
return ;
}
scores=inputScores.toArray(new Double[inputScores.size()]);
Arrays.sort(scores);
min=scores[0];
max=scores[scores.length-1];
for(double score :scores){
total += score;
}
avg=total/scores.length;
System.out.println("总成绩是" + total);
System.out.println("最高分是" + max);
System.out.println("最低分是" + min);
System.out.println("平均分是" + avg);
}
}
清心小和尚语录
2014-01-25
知道答主
回答量:80
采纳率:0%
帮助的人:44万
展开全部
if(scores[j]>max);{
max=scores[j];
}
//最低分
if(scores[j]<min);{
min=scores[j];
}
这个if条件的后面不要分号
要这么写
if(scores[j]>max){
max=scores[j];
}
//最低分
if(scores[j]<min){
min=scores[j];
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
z872029703
2014-01-25
知道答主
回答量:12
采纳率:0%
帮助的人:3.8万
展开全部
if(scores[j]>max);{max=scores[j];
} 多谢了分号。应该写为 if(scores[j]>max){max=scores[j];
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
霸天无义
2014-01-25 · TA获得超过3695个赞
知道大有可为答主
回答量:1439
采纳率:50%
帮助的人:1275万
展开全部
if(scores[j]>max);{
max=scores[j];
}
//最低分
if(scores[j]<min);{
min=scores[j];
}

把if后边的分号去掉。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式