为什么我的java代码没有得到正确的平均值?

时间:2013-12-16 02:37:04

标签: java arrays methods return

所以我正在完成一项任务,并且几乎使用方法并返回。到目前为止我的代码应该打印一个数组中的数字,然后它取这些数字并平均它们。我必须按照给出的确切格式使用我给出的方法,但我不确定为什么平均值出错了。打印521674.2作为平均值显然是错误的。这是我的代码:

public class Statistics
{

    public static void main(String[] args)
    {
        int[] nums = new int[]{5, 2, 1, 6, 7};

        printArray(nums);
        average(nums);
        double store = average(nums);
        System.out.println(store);
    }


    public static void printArray(int[] nums) {
        for(int i = 0; i < nums.length; i++){ 
            System.out.print(nums[i]); 
            }
    }


    public static double average(int[] values) {
        int sum = 0;
        double average;

        for(int i=0; i < values.length; i++){
            sum = sum + values[i];
        }
        average = (double)sum/values.length;
        return average;   

4 个答案:

答案 0 :(得分:5)

实际上,它打印了数组(52167),然后是平均值(4.2)。

为了改善这一点,您可能希望在System.out.println();的最后设置printArray,以便输出位于其自己的行上。

您可能还希望有一个分隔符,例如,,以便打印5,2,1,6,7。例如:

public static void printArray(int[] nums) {
    for (int i = 0; i < nums.length - 1; i++) { 
        System.out.print(nums[i]);
        System.out.print(","); 
    }
    if (nums.length > 0) { // make sure array isn't empty
        System.out.println(nums[nums.length - 1]);
    }
}

答案 1 :(得分:2)

您的代码没有任何问题。由于输出,你会感到困惑。

如果您对涉及printArray()的行进行评论,或将其System.out.print()更改为System.out.println(),那么您会看到预期的结果。

答案 2 :(得分:1)

目前,您的代码正在打印阵列的内容和平均值在同一行上,两者之间没有空格。删除printArray()调用,您可以看到它只输出平均值4.2,这是正确的:

public static void main(String[] args) {
    int[] nums = new int[] { 5, 2, 1, 6, 7 };

    //printArray(nums);
    average(nums);
    double store = average(nums);
    System.out.println(store);
}

答案 3 :(得分:0)

您应该使用.println()而不是print()然后就可以了