A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 张向辉 于 2013-2-3 12:06 编辑

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总输出0。我已经确定是double avg= sum/total;出现了错误。
     我将“/”改为“+”后。avg输出的结果又是正确的。求高手解答这是为什么

评分

参与人数 1黑马币 +9 收起 理由
Rancho_Gump + 9

查看全部评分

6 个回复

倒序浏览
自己顶下
回复 使用道具 举报
double sum=0;          这样就没问题了
错误处在  double avg= sum/total;       你对基本类型的 转化没弄清楚 你看看我以前发的帖子吧 写的很详细
回复 使用道具 举报
本帖最后由 杨浩 于 2013-2-1 21:50 编辑

你定义的类型不对,两个int相除,如果被除数小于除数,结果就是0,小数部分直接被干掉了。。。
修改一下,相除的两个数,一个是double就行了,另一个int会自动向上转型,就都是double了
回复 使用道具 举报
整数相除得到的还是整数吧,然后交给double只是将类型转换了下,
回复 使用道具 举报
这个主要是你没有把所有的学生的成绩用一个变量记录起来,

public class Test {
        public static void main(String[] args) {
                int sum = 0;//总分
                int count = 0;//分数在80分以上人数
                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)
                                count++;
                        sum += score;//记录总分
                }
                double avg = sum / total;
                System.out.println("80分以上的人数有:" + count);
                System.out.println("80分以上的占得比率为:" + avg);
        }

}
回复 使用道具 举报
本来是解答的,大家太热情了,我的机会都木有了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马