日期:2014-05-20  浏览次数:20721 次

java程序问题求解答
这个程序
public static void main(String[] args) {
int sum=0;
Scanner input = new Scanner(System.in);
System.out.println("请输入学生总人数:");
int total=input.nextInt();
for(int i=0;i<total;i++){
System.out.println("请输入第"+(i+1)+"个同学的成绩:");
int score = input.nextInt();
if(score>80||score==80)
sum++;
}
double avg= sum/total;
System.out.println("80分以上的人数有:"+sum);
System.out.println("80分以上的占得比率为:" + avg);
}
一开始不能输出avg,按照前辈们说的将int sum=0改为double sum=0后果然可以成功运行了。谢谢各位了!
但是请各位帮我看看这个程序
public static void main(String[] args) {
@SuppressWarnings("resource")
Scanner input = new Scanner(System.in);
System.out.println("输入学生姓名!");
String name = input.next();
int sum = 0;
for (int i = 0; i < 5; i++) {
System.out.print("请输入5门课中第" + (i + 1) + "门课的成绩:");
int score = input.nextInt();
sum = sum + score;
}
System.out.println(name+" 同学的的总分是:"+sum);
double avg=sum/5;
System.out.println(name+" 同学的平均分是:"+avg);
}
这个程序中的avg能正常输出这是为什么呢?double avg=sum/5;其中sum和5不都是int型吗?为什么可以呢?

------解决方案--------------------
第一个程序的代码double avg= sum/total; sum与total都是int类型,这个表达式先计算这两个整型,因为是整型,所以sum/total肯定是为0的,这个0接着转化为double类型,所以结果肯定都是0.0 。如果你在声明sum的时候声明其类型为double ,很难说明其是一个整数,所以最好就是在double avg= sum/total;处修改,修改为double avg= (double)sum/total;
第二个例子是自动转化的。