黑马程序员技术交流社区

标题: 自己写的java程序出现问题了,求高手解答 [打印本页]

作者: 张庚    时间: 2013-2-1 21:30
标题: 自己写的java程序出现问题了,求高手解答
本帖最后由 张向辉 于 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输出的结果又是正确的。求高手解答这是为什么
作者: 张庚    时间: 2013-2-1 21:38
自己顶下
作者: 杨杨    时间: 2013-2-1 21:43
double sum=0;          这样就没问题了
错误处在  double avg= sum/total;       你对基本类型的 转化没弄清楚 你看看我以前发的帖子吧 写的很详细
作者: 杨浩    时间: 2013-2-1 21:47
本帖最后由 杨浩 于 2013-2-1 21:50 编辑

你定义的类型不对,两个int相除,如果被除数小于除数,结果就是0,小数部分直接被干掉了。。。
修改一下,相除的两个数,一个是double就行了,另一个int会自动向上转型,就都是double了

作者: 苏克    时间: 2013-2-1 21:47
整数相除得到的还是整数吧,然后交给double只是将类型转换了下,
作者: 黄锦成    时间: 2013-2-1 22:34
这个主要是你没有把所有的学生的成绩用一个变量记录起来,

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);
        }

}

作者: 陈科宇    时间: 2013-2-1 22:46
本来是解答的,大家太热情了,我的机会都木有了。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2