问题描述
packagechujilinaxi;importjava.util.Scanner;publicclasslianxi{/***@paramargs*/publicstaticvoidmain(String[]args){System.out.println("请输入班级人数:");Scannerinput=newScanner(System.in);intnumber=input.nextInt();intscore=0;intren=0;for(inti=0;i<number;i++){System.out.print("请输入第"+(i+1)+"个同学的成绩");score=input.nextInt();if(score>80){ren++;}else{continue;}}System.out.println("成绩大于80的人数为:"+ren);doubleb=newDouble(ren).doubleValue()/newDouble(number).doubleValue();System.out.println("八十分以上的学生所占比例为:"+b);}}上面的可以求出比例,为什么下面的求不出比例呢packagechujilinaxi;importjava.util.Scanner;publicclasslianxi{/***@paramargs*/publicstaticvoidmain(String[]args){System.out.println("请输入班级人数:");Scannerinput=newScanner(System.in);intnumber=input.nextInt();intscore=0;intren=0;for(inti=0;i<number;i++){System.out.print("请输入第"+(i+1)+"个同学的成绩");score=input.nextInt();if(score>80){ren++;}else{continue;}}System.out.println("成绩大于80的人数为:"+ren);doubleb=ren/number;System.out.println("八十分以上的学生所占比例为:"+b);}}更多0
解决方案
解决方案二:
doubleb=newDouble(ren).doubleValue()/newDouble(number).doubleValue();所有的参与运算的数据全被转为double型了,除法计算后可以得到小数doubleb=ren/number;后面的ren和number都是int型,相当于两个int型的数据整除,然后将所得的结果值转换为double值一样先得到结果值,然后转double使用下面的方式,需要做个修改,便可得到结果值doubleb=Double.valueOf(ren)/number;
解决方案三:
ren/number是int型,两个数相除的结果是0然后再转成double型0.0可以这样写doubleb=(double)ren/number进行类型强转。
解决方案四:
引用2楼zwdsmileface的回复:
ren/number是int型,两个数相除的结果是0然后再转成double型0.0可以这样写doubleb=(double)ren/number进行类型强转。
这让我笑了楼主还是自己试一下好了doubleb=(double)ren/numberdoubleb=(double)ren/(double)number试了你会顿悟的哈哈哈
解决方案五:
引用3楼u012355452的回复:
Quote: 引用2楼zwdsmileface的回复:
ren/number是int型,两个数相除的结果是0然后再转成double型0.0可以这样写doubleb=(double)ren/number进行类型强转。这让我笑了楼主还是自己试一下好了doubleb=(double)ren/numberdoubleb=(double)ren/(double)number试了你会顿悟的哈哈哈
运行出来不是一样的吗