public class OverAverage{
public static void main(String[]args){
int arr[]=new int[args.length];

  Average(arr);
  Over(arr);
  for(int i=0;i<arr.length;i++){
   arr[i]=Integer.parseInt(args[i]);
  }

public static void Average(int arr[]){

for(int i=0;i<arr.length;i++){
int sum=0;
sum=sum+arr[i];
}
int average;
average=sum/(arr.length);
   
System.out.println("average:"+average);

  public static void Over(int arr[]){
   int countNum=0,i=0;
   if (arr[i]>average){
   countNum++;
   }
   else{
   return;
   }
   System.out.println("countNum:"+countNum);
  }
}   


java 18;java24:都找不到符号;怎么更改呢,题目要求是任意输入几个数,求大于平均数的个数

解决方案 »

  1.   

    for循环给arr赋值难道不应该放在求平均值和个数前面吗?????????????
      

  2.   

    不报错但是肯定有关系!正确的如下,不信你放后面试试~~public class OverAverage{public static void main(String[]args){
    int arr[]=new int[args.length];
    for(int i=0;i<arr.length;i++){
    System.out.println(args[i]);
    arr[i]=Integer.parseInt(args[i]);
    }
    int average=Average(arr);
    Over(arr,average);
    }  
    public static int Average(int arr[]){
    int sum=0;
    for(int i=0;i<arr.length;i++){
    sum=sum+arr[i];

    int average;
    average=sum/(arr.length);
      
    System.out.println("average:"+average);
    return average;
    }  
      public static void Over(int arr[],int average){
      int countNum=0,i=0;
      if (arr[i]>average){
      countNum++;
      }
      else{
      return;
      }
      System.out.println("countNum:"+countNum);
      }
    }   
      

  3.   

    public class OverAverage {
    static int average;
    public static void main(String[] args) {
    int arr[] = new int[args.length];

    for (int i = 0; i < arr.length; i++) {
    arr[i] = Integer.parseInt(args[i]);
    }
    Average(arr);
    Over(arr);
    } public static void Average(int arr[]) {
    int sum=0;//sum没有定义
    for (int i = 0; i < arr.length; i++) {

    // 你的sum不能定义在这里成(int sum = 0错),因为出了离他最近的大括号就失效了,相当于不存在了,
    //而且天啊,你这样是每次循环都把sum给定义成0,全都白加了
    sum = sum + arr[i];
    }
    //你的average就更不能定义在这了(int average 错),那是大错特错了,原因同比上面的还要离谱。
    //因为你的这个Average(int arr[])是没有返回值的,所以你必须得把average定义成当前类的成员变量,这样可以在所有方法里共用。

    average = sum / (arr.length);
    System.out.println("平均值average:" + average);
    } public static void Over(int arr[]) {
    int countNum = 0;/*  i = 0;这里怎么能定义成i=0,那你下面的循环,就永远都算的是arr[0]在判断k
    if (arr[i++] > average) {
    countNum++;
    } else {
    return;
    }
    */
    //这里要用for循环如下
    for (int i = 0; i < arr.length; i++) {
    if (arr[i++] > average) {
    countNum++;

    }

    System.out.println("比平均值大的数一共有countNum:" + countNum+"个");
    }
    }//这是修改后的标准程序,建议楼主最好把Average()定义成有返回值的方法更好.
      

  4.   

    package a;public class OverAverage {

    //在静态方法中调用,所以需要定义为 static
    private static int average = 0 ;
    private static int sum = 0 ;

    public static void main(String[] args) {
    int arr[] = new int[args.length];
    System.out.println(args.length) ;
    //先判断args是否有值先 
    if (args.length  == 0 ){
    System.out.println("javac a.OverAverage  12 13 14 15");
    System.exit(1) ;
    }
    for (int i = 0; i < arr.length; i++) {
    arr[i] = Integer.parseInt(args[i]);
    }
    Average(arr);//你就还没有给arr赋值
    Over(arr);
    //把下面的写前面去,先赋值后使用
    // for (int i = 0; i < arr.length; i++) {
    // arr[i] = Integer.parseInt(args[i]);
    // }
    } public static void Average(int arr[]) { average = 0 ;
    sum = 0 ;
    for (int i = 0; i < arr.length; i++) {
    //int sum = 0;//每次都重新定义一个 ,相当于每次sum都只是等于当前的那个数组值
    sum = sum + arr[i];
    }
    //int average;
    average = sum / (arr.length); System.out.println("average:" + average);
    } public static void Over(int arr[]) {
    int countNum = 0, i = 0;
    if (arr[i] > average) {
    countNum++;
    } else {
    return;
    }
    System.out.println("countNum:" + countNum);
    }
    }
      

  5.   

    4楼最后一个for循环多了++....
    if (arr[i++] > average)
    删掉就完美了~
    总之这些都不是数组的问题
      

  6.   

    嗯,对哦,哈哈,楼上大哥有理,有理,哦Yeah。