2D阵列填充不起作用

时间:2015-04-14 00:46:52

标签: java arrays arraylist

我正在尝试使用我读过的字符串中的char来填充2D数组。实际上填充此2D数组时遇到问题。它不断打印比我给出的更大的2D数组,数字似乎总是6而不是字符串中的字母。

我将字符串存储在名为tempArray的ArrayList中。

输入字符串:     WUBDLAIUWBD     LUBELUFBSLI     SLUEFLISUEB

我实例化一个columnlength = 11和rowcount 3的2D数组 epidemicArray = new int[rowCount][columnCount];

在我尝试填充之前

数组:

00000000000
00000000000
00000000000

我的代码:

public static void updateArray(){
    //extract string from temp
    for (int i = 0; i < tempArray.size(); i++){
        String temp = tempArray.get(i);
        char[] charz = temp.toCharArray();
        for (int j = 0; j < charz.length; j++){
            for (int k = 0; k < rowCount; k++){
                for (int l = 0; l < columnCount; l++){
                    epidemicArray[k][l] = charz[j];
                }
            }
        }
    }
}

输出:我没想到的是

6666666666666666666666
6666666666666666666666
6666666666666666666666

预期输出:(2D数组)

WUBDLAIUWBD
LUBELUFBSLI
SLUEFLISUEB

谢谢,这真是让我烦恼。

2 个答案:

答案 0 :(得分:2)

将您的代码更改为:

public static void updateArray(){
    //extract string from temp
    for (int i = 0; i < tempArray.size(); i++){
        String temp = tempArray.get(i);
        char[] charz = temp.toCharArray();
        for (int j = 0; j < charz.length; j++){ 
                epidemicArray[i][j] = charz[j];
        }
    }
}

此编辑应该有效,因为列数是其中一个字符串的长度(3个字符串的长度相同)。

这是我的输出

ArrayList to array

[编辑]。 @magna_nz,我使用以下方法打印数组

public static void printRow(int rowNumber) {
    for (int i = 0; i < 11; i++) {
        System.out.print( epidemicArray[rowNumber][i] + " ");
    }
    System.out.println();
}

public static void main(String[] args) {

    updateArray();
    for (int i = 0; i < 3; i++) {
        printRow(i);
    }
}

这将打印数字,但如果要打印字符,可以将上述printRow方法更改为:

public static void printRow(int rowNumber) {
    for (int i = 0; i < 11; i++) {
        System.out.print( (char)epidemicArray[rowNumber][i] + " ");
    }
    System.out.println();
}

这会给你以下结果:

in chars

答案 1 :(得分:1)

您使用epidemicArray获得的最后一个值覆盖整个charz[j]。这显然是66.实际上你用charz和最后一个赢得的每个值覆盖整个数组。