2D数组甚至奇怪的java

时间:2014-11-12 22:02:39

标签: java arrays multidimensional-array

我必须在两个不同的行中(即使在第1行和第2行中的奇数)中分隔java中的2D数组中的偶数和奇数。我在这里包含了我的代码的输出,这是我所拥有的:

class TwoDimensionArrays {
    public static void main(String[] args) {
        int sum = 0;
        int row = 2;
        int column = 10;
        int[][] iArrays = new int[row][column]; 

        for(int rowCount = 0; rowCount < iArrays.length /*&& rowCount % 2 == 0*/; rowCount++) {
            for(int columnCount = 0; columnCount < iArrays[0].length /*&& columnCount % 2 != 0*/; columnCount++) {
                if(columnCount % 2 != 0 /*&& rowCount % 2 == 0*/) {
                iArrays[rowCount][columnCount] = columnCount + 1;

                }   


            }


        }

    System.out.println("The array has " + iArrays.length + " rows");
    System.out.println("The array has " + iArrays[0].length + " columns");

    for(int rowCount = 0; rowCount < iArrays.length; rowCount++) {
        for(int columnCount = 0; columnCount < iArrays[0].length; columnCount++) {
            System.out.print(iArrays[rowCount][columnCount] + " ");
            sum += iArrays[rowCount][columnCount];
        }
    System.out.println();
    }
    System.out.println("The sum is: " +sum);
    }
}
//OUTPUT//
/*The array has 2 rows
The array has 10 columns
0 2 0 4 0 6 0 8 0 10 
0 2 0 4 0 6 0 8 0 10 
The sum is: 60*/

任何人都可以伸出援手吗?

提前谢谢。

2 个答案:

答案 0 :(得分:0)

不要两次传递列表,而是尝试:

for(int v = 0; v < 20; v++) {
    iArrays[v % 2][(int)v/2] = v;
}

这会将iArrays设置为:

[[0,2,4,6,8,10,12,14,16,18],
 [1,3,5,7,9,11,13,15,17,19]]

正在发生的事情是row被设置为v % 2的剩余部分(0如果v是偶数,1如果v }是奇数)并且col被设置为相应的索引(转换为int以丢弃任何分数)。你甚至可以这样概括:

public static int[][] group(int groups, int size){
    int[][] output = new int[groups][size];
    for(int value = 0; value < (groups*size); value++) {
        output[value % groups][(int)value/groups] = value;
    }
    return output;
}

然后调用group(2, 10)将返回:

[[0, 2, 4, 6, 8, 10, 12, 14, 16, 18], [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]]

答案 1 :(得分:0)

如果我理解你的问题,一个解决方案是将数组从0迭代到COLUMN并将每个连续的时隙设置为2加上前一个时隙值(从0开始为偶数,1开始为奇数)。像,

public static void main(String arg[]) {
    final int ROW = 2;
    final int COLUMN = 10;
    int[][] iArrays = new int[ROW][COLUMN];
    for (int i = 0; i < COLUMN; i++) {
        iArrays[0][i] = (i > 0) ? iArrays[0][i - 1] + 2 : 0; // 0,2,4,6...
        iArrays[1][i] = (i > 0) ? iArrays[1][i - 1] + 2 : 1; // 1,3,5,7...
    }
    System.out.println(Arrays.deepToString(iArrays));
}

输出

[[0, 2, 4, 6, 8, 10, 12, 14, 16, 18], [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]]