永发信息网

Java求学生平均分

答案:4  悬赏:30  手机版
解决时间 2021-05-01 10:08

这是一个用Java编译的求学生平均成绩的代码:

import java.util.Scanner;
public class student
{
public static void main(String [] args)
{
System.out.println("请输入学生的考试分数,每输入一个按回车确认。");
System.out.println("最后,输入任一个非数字字符表示结束。");
double sum=0;
float sum1=0;
double x=0;
int m=0;
Scanner reader=new Scanner(System.in);
while(reader.hasNextDouble())
{
m++;
sum+=reader.nextDouble();
}
sum1=(float)(sum/m);
//System.out.printf("%d 个学生的总分数为:%f",m,sum);
System.out.println("");
System.out.println("★共输入"+m+"个学生。");
System.out.println("★"+m+"个学生的总分为:"+sum);
System.out.println("★"+m+"个学生的平均分为:"+sum1);
System.out.println();
}
}

上面的代码可以运行通过;

但是我想求出输入成绩的最大值和最小值;

要想比较大小,必须把所输入的数保存;

可是想到了把输入的数保存到一个数组里面;

于是就写了下面的代码:

import java.util.Scanner;
public class student1
{
public static void main(String [] args)
{
System.out.println("请输入学生的考试分数,每输入一个按回车确认。");
System.out.println("最后,输入任一个非数字字符表示结束。");
double sum=0;
float sum1=0;
double x=0;
int m=0;
double [] sum2={};
Scanner reader=new Scanner(System.in);
while(reader.hasNextDouble())
{
m++;
sum2[m]=reader.nextDouble();
sum+=reader.nextDouble();

}
sum1=(float)(sum/m);
//System.out.printf("%d 个学生的总分数为:%f",m,sum);
System.out.println("");
System.out.println("★共输入"+m+"个学生。");
System.out.println("★"+m+"个学生的总分为:"+sum);
System.out.println("★"+m+"个学生的平均分为:"+sum1);
}
}

这个代码编译能通过,但是输入数据的时候就会出错;

你们可以试试;

请大家帮帮忙

谢谢!

最佳答案

double [] sum2={};要给一个初始化改成


double[] sum2 = new double[5];

全部回答

你的此两处:

1.double [] sum2={};

2.sum2[m]=reader.nextDouble();
sum+=reader.nextDouble();

错了,会造成少一个人的成绩!

按你意愿把成绩放入数组,我改写如下:

public void test() {

//循环处改如下: List<Double> list = new ArrayList<Double>(); while(reader.hasNextDouble()) { m++; temp=reader.nextDouble(); list.add(temp); sum+=temp;

} double [] sum2=new double[list.size()]; int i=0; for (Iterator iterator = list.iterator(); iterator.hasNext();) { sum2[i] = (Double) iterator.next(); i++; } }

import java.util.Scanner; public class student1 { public static void main(String [] args) { System.out.println("请输入学生的考试分数,每输入一个按回车确认。"); System.out.println("最后,输入任一个非数字字符表示结束。"); double sum=0; float sum1=0; double x=0; int m=0; Scanner reader=new Scanner(System.in); while(reader.hasNextDouble()) { m++; x=reader.nextDouble(); sum+=x; } sum1=(float)(sum/m); //System.out.printf("%d 个学生的总分数为:%f",m,sum); System.out.println(""); System.out.println("★共输入"+m+"个学生。"); System.out.println("★"+m+"个学生的总分为:"+sum); System.out.println("★"+m+"个学生的平均分为:"+sum1); } }
数组要提前定义大小,或者你用一个Vector或ARRAYLIST吧,动态数组,加多少数据,数组就是多大,不用提前定义大小
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
天龙八部里¥50能换多元宝?
这只蝴蝶多少
求一款金山杀毒软件要免费的
帮我盘点一下国家男篮的新秀
找出歌曲.魔鬼教师的主题歌曲是谁的
海市蜃楼是怎么形成的,为什么空气密度会不同
精品2元超市地址有知道的么?有点事想过去
兔美多少钱?
我要买一个电子词典,要有电子书功能的,最好
车管事汽车养护中心怎么去啊,有知道地址的么
描写午后的诗词,形容安静的古诗词
谁教教这样的图是怎么做得?
水煮鱼好吃吗,?
谁能给个爱墙种子???
自考一本可能吗?
推荐资讯
如何成功度过孤独
经典语句摘抄小兵张嘎,摘抄小兵张嘎中的一段
小熊梦工厂在哪
乌拉特前旗明安镇这个地址在什么地方,我要处
车次T225北京到大连,如果中途在瓦房店下车到
QQ为什么老是突然掉线?
家庭是这样的吗
QQ下面的游泳图标不玩游戏怎么点亮
怎样恢复设备
设置验证信息
锦程农家菜馆在哪里啊,我有事要去这个地方
2010大地欢歌到底什么时候开始报名
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?