要求从键盘读入一些正数(读入正数的个数要由用户从键盘输入,比如要读入9个正数,就要用户输入9来确定),求出大于总平均值的正数并输出到屏幕来.

解决方案 »

  1.   

    import java.io.*;public class MoreAverage {
        InputStreamReader in;
        BufferedReader reader;
        String s;
        int i;

        public MoreAverage(){
        
        }
        
    public int setNumber(){
    try{
    in = new InputStreamReader(System.in);
    reader = new BufferedReader(in);

    s = reader.readLine();

    i = 0;

        try{
         i = Integer.parseInt(s);
        }catch(Exception e){
            System.out.println("Wrong Input!");
        }  
        
    }catch(IOException e){
    System.out.print("Wrong Input!");
    }
            
    return i;
        }

    public int average (int size){
    int[] array = new int[size];
    int average = 0;

    for(int i=0; i<size; i++)
    array[i] = setNumber();

    for(int i=0; i<size; i++)
        average += array[i];
        average /= size;

    System.out.print(average);   
    return average;
    }

    public static void main(String args[]){
    MoreAverage app = new MoreAverage();
    app.average(3);

    }}这个是计算三个输入数的均值,你可以修改app.average(3);中的3为任何数字。
    至于如何输出比均值大的数,那就再循环一次数组就好了。
    不知道还有没有更好的程序了,希望有人提供学习。
      

  2.   

    public class MoreAverage {  private static float[] num;
      private static float aver;
      
      public static void main(String args[]) {
        num = setNumber(5);
        aver = average(num);
        System.out.printf("平均值为:%.4f%n", aver);
        System.out.println("比平均值大的数有:");
        for(int i=findIndex(0, num.length); i<num.length; i++){
          System.out.println(num[i]);
        }    
      }  // 输入需要计算的数
      public static float[] setNumber(int count) {
        Scanner scan = new Scanner(System.in);
        float[] num = new float[count];
        for (int i = 0; i < count; i++) {
          System.out.printf("请输入第%d个数:", i + 1);
          try {
            num[i] = scan.nextFloat();
          }catch(Exception e){
            System.out.println(e.getMessage());
            --i;
            scan.next();
            System.out.println(" ** 输出错误,请重新输入 ** ");
          }
        }
        Arrays.sort(num);  // 使用Java的内置算法进行排序
        return num;
      }  // 计算平均数
      public static float average(float[] size) {
        float average = 0;
        float sum = 0;
        for (int i = 0; i < size.length; i++) {
          sum += size[i];
        }
        average = sum / size.length;
        return average;
      }
        // 使用二分法寻找大于平均数的索引点
      public static int findIndex(int low, int high) {
        int middle = (low + high) /2;
        if( low >= high){
          return middle;
        }
        if(num[middle]>=aver){
          return findIndex(low, middle);
        }else{
          return findIndex(middle+1, high);
        }
      }
    }先依次输入n个数,输入完成后进行排序,计算平均值,最后使用二分法查找大于平均数的数字的最小的索引点,再根据这个索引点输出。如果输入完成后不进行排序,那只能按照你的方法依次使用循环进行查找了。
      

  3.   

    import java.io.*;
    import java.util.*;public class MoreAverage {
    InputStreamReader in;
        BufferedReader reader;
        String s;
        float i;

        public MoreAverage(){
        
        }
        
    public float setNumber(){
    try{
    in = new InputStreamReader(System.in);
    reader = new BufferedReader(in);

    System.out.print("请输入数:");
    s = reader.readLine();

    i = 0;

        try{
         i = Float.parseFloat(s);
        }catch(Exception e){
            System.out.println("Wrong Input!");
        }       
    }catch(IOException e){
    System.out.print("Wrong Input!");
    }       
    return i;
        }

    public float average (int size){
    float[] array = new float[size];
    float average = 0;

    for(int i=0; i<size; i++)
    array[i] = setNumber();

    Arrays.sort(array);
    System.out.print("数组排序后:");

    for(int i=0; i<size; i++)
        System.out.print(array[i] + " ");

    for(int i=0; i<size; i++)
    average += array[i];
        average /= size;
        System.out.println("\n" + "平均值为:" + average);  

    System.out.print("大于平均数的数有:");
    for(int i=0; i<size; i++)
    if(array[i] > average)
           System.out.print(array[i] + " ");
           
    return average;
    }

    public static void main(String args[]){
    MoreAverage app = new MoreAverage();
    app.average(5);

    }
    }这个是完整的程序了,加上了排序功能,其实排序在这里不是必须的。
    输出结果:
    请输入数:233
    请输入数:44
    请输入数:51
    请输入数:66
    请输入数:90
    数组排序后:44.0 51.0 66.0 90.0 233.0 
    平均值为:96.8
    大于平均数的数有:233.0
      

  4.   

    public static void main(String[] args) {
    // TODO Auto-generated method stub
         InputStreamReader in = new InputStreamReader(System.in);
         BufferedReader bf = new BufferedReader(in);
         int sum=0;
         try {
    String[] a = bf.readLine().split(" ");
    for(int i=0; i<a.length; i++){
    sum+=Integer.parseInt(a[i]);
    }

    float f = sum/a.length;
    System.out.println(f);
    for(int j=0; j<a.length; j++){
    int c = Integer.parseInt(a[j]);
    if(c>f){
    System.out.println(c);
    }

    }

    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }}