平均2D数组java的列中的值

时间:2014-04-08 09:11:55

标签: java arrays methods

除了代码生成的额外列之外,一切正常,除了我的avg方法,这意味着平均每行的值。我是编码的新手,所以也许我没有看到问题,但方法并没有按预期工作。起初我认为这是一个总和的问题,但改变它并没有真正解决最初的问题。列输入(2,1,3)将在1处产生异常错误,但在输入为(1,3,2)时不会发生。无论列长度如何,平均值仅产生2个。

当输入(1,2,3)的列输入时,我的目标是打印此代码:

A:2.0 [1.0]

B:2.0 2.0 [2.0]

C:2.0 2.0 2.0 [3.0]

其中括号内的术语是该行的平均值。

代码:

import java.util.Scanner;
//================================================================
public class ArrayIrreg {
//----------------------------------------------------------------
    private static Scanner Keyboard = new Scanner(System.in);

    public static void main(String[] args) {
    //----------------------------------------------------------------
        char group, rLetter,letter;
        String choice;
        int sum     =  0;
        int num     = 10; // for test
        int rows    = 10;
        int columns =  8;



        // creating 2d array


        System.out.print("Please enter number of rows               : ");
        rows = Keyboard.nextInt();
        Keyboard.nextLine();

        while (rows < 0 || rows >= 10) {
            System.out.print("ERROR:Out of range, try again              : ");
            rows = Keyboard.nextInt();
            Keyboard.nextLine();
        }

        double[][] figures = new double[rows + 1][num];

        for(int t = 0; t < rows; t++) { 
            rLetter = (char)((t)+'A');
            System.out.print("Please enter number of positions in row " + rLetter + " : "); 
                columns = Keyboard.nextInt(); 
                Keyboard.nextLine(); 

            while((columns < 0) || (columns >= 8)) { 
                System.out.print("ERROR:Out of range, try again : "); 
                    columns = Keyboard.nextInt(); 
                    Keyboard.nextLine(); 
            } 

            figures[t] = new double[columns]; 
        }

        // filling the array
        for(int row = 0; row < figures.length; ++row) {
            for(int col = 0; col < figures[row].length; ++col) {
                figures[row][col] = 2.0;
            }
        }

        // printing the array
        for(int row = 0; row < figures.length; ++row) {    
            // printing data row
            group = (char)((row)+(int)'A');
            System.out.print(group + " : ");

            for(int col = 0; col < figures[row].length; ++col) { 

                System.out.print(figures[row][col] + " ");
                System.out.print(" ");
                }
            System.out.print("["+","+avg(figures)+"]");
            System.out.println();
        }


public static double avg(double temp[][]) {
    int sum = 0;
    int avg = 0;

    for (int row = 0; row < temp.length; row++){
        for (int col = 0; col < temp[col].length; col++) 
            sum += temp[row][col];

        }

    avg = sum / temp.length;
    return avg;
    }   
}

1 个答案:

答案 0 :(得分:0)

我认为你做错了不是总结一行的所有元素并取平均值,而是总结整个矩阵并取平均值,它总是相同的值。