2014-08-28 77 views
1

我有一个家庭作业分配,我必须创建一个数组,然后求和数组中的元素,然后查找数组中的元素的平均值,但我必须在相同方法作为求和方法。Java中的数组总和和平均值

这就是我到目前为止,我看过我的书,并把它放在我的代码中,但它不会正确编译。

class SumArray{ 
    public static void main(String args[]){ 
     double[] array = {7,8,9,10,11,12,13}; 
     sumArray(array); 
    } 


    public static double sumArray(double[] array){ 
     double sum = 0; 
     for (int i = 0; i < array.length; i++){ 
     sum += array[i]; 
     //System.out.println("Sum is = " + sum); 
     } 
     //System.out.println("Sum is = " +sum); 
     //after summing then get average 
     return sum; 

    double average = sum/array.length; 

    System.out.println("Average value of array element is " + average); 
    return average; 
    }  
} 
+0

你是否遇到特定错误?你能更新你的问题吗? – jdphenix 2014-08-28 05:08:55

+0

这是如何编译的? – 2014-08-28 05:11:36

+0

投射阵列。长度为double,否则你将得到一个int作为结果。 – 2014-08-28 05:12:27

回答

1

您正在返回总和在您的方法return sum;所以在代码中写入的代码将不会运行。这可能是错误。

简单的解决方法是创建一个不同的方法来计算平均值。

class SumArray{ 
    public static void main(String args[]){ 
     double[] array = {7,8,9,10,11,12,13}; 
     double results[] = sumArray(array); 

     System.out.println("Sum "+result[0]); 
     System.out.println("Average "+result[1]); 

    } 


    public static double[] sumArray(double[] array){ 
     double sum = 0; 
     for (int i = 0; i < array.length; i++){ 
     sum += array[i]; 
     //System.out.println("Sum is = " + sum); 
     } 
     //System.out.println("Sum is = " +sum); 
     //after summing then get average 


     double average = sum/array.length; 

    System.out.println("Average value of array element is " + average); 

    double results[] = {sum, average}; 

     return results; 

    }  


} 
+1

'但我必须用与求和方法相同的方法来做... :) – Tom 2014-08-28 05:17:24

+0

@Tom好点,我没有注意到。 – gprathour 2014-08-28 05:20:46

0

此代码不能达到的,因为你已经有了一个return声明略高于

double average = sum/array.length; 

你只需要删除return sum;

0

sumaverage实例变量,并给他们的内部值方法。因此,您可以用单一方法计算sumaverage

public class Average { 

    double sum,average; 

    public static void main(String[] args) { 


    double[] numbers = {1,2,3,4,5,6,7}; 
    sumAndAverage(numbers); 


    System.out.println("Average is " + this.average+" and sum is "+this.sum); 
    } 
    public static void sumAndAverage(double[] numbers) 
    { 
     for (int i = 0; i < numbers.length; i++) { 
      this.sum += numbers[i]; 
     } 

     this.average = this.sum/numbers.length ; 
    } 

} 
1

您的代码不编译,因为后return声明不能有任何其他声明或宣言,因为该代码是肯定不会到达。

如果您必须在一种方法中执行此操作,则您的方法必须返回2个值。你可以以不同的方式:

1)返回2倍的值作为数组:

// The 1st element in the returned array is the sum, the 2nd is the average 
public double[] sumAvg(double[] arr) { 
    double sum = 0; 
    for (double d : arr) 
     sum += d; 
    return new double[]{sum, sum/arr.length}; 
} 

2)此创建一个包装类:

class SumAvg { 
    public double sum, avg; 
} 

public SumAvg sumAvg(double[] arr) { 
    double sum = 0; 
    for (double d : arr) 
     sum += d; 
    SumAvg sa = new SumAvg(); 
    sa.sum = sum; 
    sa.avg = sum/arr.length; 
    return sa; 
} 

3 )作为List返回2个值:

// The 1st element in the returned List is the sum, the 2nd is the average 
public List<Double> sumAvg(double[] arr) { 
    double sum = 0; 
    for (double d : arr) 
     sum += d; 
    return Arrays.asList(sum, sum/arr.length); 
} 
0
public class ToFindAverage { 

    public static void main(String[] args) { 
     double total; 
     double average; 
     int i; 
     int[] list; 
     list = new int[4]; //make container for 4 
     list[0] = 1; 
     list[1] = 2; 
     list[2] = 3; 
     list[3] = 4; 
     total = 0; 
     for (i = 0; i < list.length; i++) { 
      total = total + list[i]; 
     } 
     average = total/list.length; 
     System.out.println("The total average is " + average); 
    } 
} 
1

那么,你只需要删除return sum。你的代码非常好。

同时你可以找到之和阵列的平均以这种方式也

public class AverageArray 
{ 
    public static void main(String[] args) 
    { 
     int num[] = new int[]{30,12,14,24,19,89,128}; 
     int total = 0; 

     for(int a = 0; a < num.length; a++) 
     { 
     total = total + num[a]; 
     } 

     double average = total/num.length; 

     System.out.println("The total is : " + total); 
     System.out.println("Java average of array : " + average); 
    } 
} 

来源和参考 - Sum and average of an array

0

认为你应该添加更多的OOP。创建这样的班级,你的老师会留下深刻的印象,会给钱奖励,并将你发送给IT竞赛:

class MathArray { 
    private double[] data; 
    public MathArray(double[] data) { 
     this.data = data; 
    } 
    public double getSum() { 
     double out = 0; 
     for(double d : data) { 
      out += d; 
     } 
     return out; 
    } 

    public double getAverage() { 
     return getSum()/data.length; 
    } 
}