求解
为什么avg会是错误的(有的时候)?
为什么bili没用?
代码如下:package shuzu;
import java.util.*;public class LiuChengTest {
    public static void main(String[] args){
     Scanner input = new Scanner(System.in);
     int score = 0;
     int count=0;
     int sum=0;
     int avg=0;
     int bili=0;
     int stuNum=4;
     for(int i=1;i<=3;i++){
     System.out.println("请输入第"+i+"班级的学员成绩:");
     for(int j=1;j<=stuNum;j++){
     System.out.println("请输入第"+j+"学员的成绩:");
     score = input.nextInt();
     sum+=score;
     if(score<85){
     continue;
     }
     count++;
     }
     avg=sum/4;
   bili = (count/stuNum)*100;
     System.out.println("学员的平均分为:"+avg);
         System.out.println("85分以上学员的比例为:"+bili+"%");
     }
    }
}

解决方案 »

  1.   

    既然是求平均分数那就用浮点类型——float或double的,用int肯定是有问题的。
      

  2.   

    bili = (count/stuNum)*100;
    改成
    bili = count*100/stuNum);
    /这个运算符是不会取小数点以后的结果的
      

  3.   

    不说别的,你这个算法就是错误的。每个班级肯定有每个班级的平均分和85分以上的学生吧?所以你应该把
    int sum = 0;
    int avg = 0;
    放到第一个for循环里面去。
      

  4.   

    你的第一重循环完了之后需要将变量清0。 count=0;
     sum=0;平均数bili = (count/stuNum)*100;
    可以利用NumberFormat对象格式化数值:eg: int num1 = 1;
    int num2 = 4;
    // 创建一个数值格式化对象
    NumberFormat numberFormat = NumberFormat.getInstance();
    // 设置精确到小数点后2位
    numberFormat.setMaximumFractionDigits(2);
    String result = numberFormat.format((float)num1/(float)num2*100);
    System.out.println("num1和num2的百分比为:" + result + "%");
      

  5.   

    上面许多人已经说得很清楚了,你改成这样试试:
    public class LiuChengTest {
        public static void main(String[] args){
            Scanner input = new Scanner(System.in);
              for(int i=1;i<=3;i++){
                 int score = 0;
                 int count=0;
                 int sum=0;
                 int avg=0;
                 int bili=0;
                 int stuNum=4;

                System.out.println("请输入第"+i+"班级的学员成绩:");
                for(int j=1;j<=stuNum;j++){
                    System.out.println("请输入第"+j+"学员的成绩:");
                    score = input.nextInt();
                    sum+=score;
                    if(score<85){
                        continue;
                    }
                    count++;
                }
                avg=sum/4;
                  bili = (count/stuNum)*100;
                System.out.println("学员的平均分为:"+avg);
                System.out.println("85分以上学员的比例为:"+bili+"%");
            }
        }
    }
      

  6.   

    修改后的程序
    public class LiuChengTest {
        public static void main(String[] args){
            Scanner input = new Scanner(System.in);
            for(int i=1;i<=3;i++){
             double score = 0;
                int count=0;
                int sum=0;
                double avg=0;
                double bili=0;
                int stuNum=4;
                System.out.println("请输入第"+i+"班级的学员成绩:");
                for(int j=1;j<=stuNum;j++){
                    System.out.println("请输入第"+j+"学员的成绩:");
                    score = input.nextInt();
                    sum+=score;
                    if(score>85){
                     count++;
                    }
                }
                avg=(double)sum/4;
                bili = ((double)count/(double)stuNum)*100;
                System.out.println("学员的平均分为:"+avg);
                System.out.println("85分以上学员的比例为:"+bili+"%");
            }
        }
    }
    运行结果
    [code=运行结果]
    请输入第1班级的学员成绩:
    请输入第1学员的成绩:
    99
    请输入第2学员的成绩:
    99
    请输入第3学员的成绩:
    99
    请输入第4学员的成绩:
    99
    学员的平均分为:99.0
    85分以上学员的比例为:100.0%
    请输入第2班级的学员成绩:
    请输入第1学员的成绩:
    95
    请输入第2学员的成绩:
    95
    请输入第3学员的成绩:
    20
    请输入第4学员的成绩:
    20
    学员的平均分为:57.5
    85分以上学员的比例为:50.0%
    请输入第3班级的学员成绩:
    请输入第1学员的成绩:
    95
    请输入第2学员的成绩:
    95
    请输入第3学员的成绩:
    95
    请输入第4学员的成绩:
    20
    学员的平均分为:76.25
    85分以上学员的比例为:75.0%[/code]
      

  7.   

    此题涉及到,数据类型的转换, 很明显结果是double类型的, 但bili变量和avg变量都是Int类型的, 所以要进行一下放大转换(强制转换), 或者包bili和avg 的类型该为double 类型即可。