Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 二维数组填充不起作用_Java_Arrays_Arraylist - Fatal编程技术网

Java 二维数组填充不起作用

Java 二维数组填充不起作用,java,arrays,arraylist,Java,Arrays,Arraylist,我试图用我读入的字符串中的字符填充2D数组。我在填充这个2D数组时遇到了一个问题。它不断打印一个比我给它的数组大的2D数组,并且数字似乎总是6,而不是字符串中的字母 我将字符串存储在名为tempArray的ArrayList中 输入字符串: WUBDLAIUWBD LUBELUFBSLI SLUEFLISUEB 我实例化了一个columnlength=11、rowcount为3的二维数组 epidemicArray=newint[rowCount][columnCount] 数组,然后再尝试填充

我试图用我读入的字符串中的字符填充2D数组。我在填充这个2D数组时遇到了一个问题。它不断打印一个比我给它的数组大的2D数组,并且数字似乎总是6,而不是字符串中的字母

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

输入字符串:
WUBDLAIUWBD
LUBELUFBSLI
SLUEFLISUEB

我实例化了一个columnlength=11、rowcount为3的二维数组
epidemicArray=newint[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];
                }
            }
        }
    }
}
预期输出:(2D阵列)


谢谢,这真的让我很烦。

你正在用
charz[j]
得到的最后一个值覆盖整个
epidemicArray
。显然是66。实际上,您正在用
charz
中的每个值覆盖整个数组,最后一个值获胜。

将代码更改为:

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];
        }
    }
}
publicstaticvoidupdatearray(){
//从temp中提取字符串
对于(int i=0;i
由于列数是其中一个字符串的长度(其中3个字符串的长度相同),因此此编辑应该有效

这是我的输出

[编辑]@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);
    }
}
publicstaticvoidprintrow(intrownumber){
对于(int i=0;i<11;i++){
System.out.print(epidemicArray[rowNumber][i]+“”);
}
System.out.println();
}
公共静态void main(字符串[]args){
updateArray();
对于(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();
}
publicstaticvoidprintrow(intrownumber){
对于(int i=0;i<11;i++){
System.out.print((char)epidemicArray[rowNumber][i]+“”);
}
System.out.println();
}
这将为您提供以下结果:


您对输出的期望是什么?四个for循环让我做噩梦。如果您只是尝试填充二维数组,那么实际上只需要两个循环,除非您做了一些奇怪的事情。显示正在定义和初始化的数组。6868686868686868686868686873737373736666666666666666666666666666666666666666666666666666是输出。不工作。
8785666876657385876668
76856676857066837673
83768569707383856966
就是我得到的。但是为什么它不显示数字而不是字符??还有,为什么长度大于11(这是我允许的最大数组大小)?@magna_nz,长度不大于11,正好是11。打印时,在每次打印之间添加一个空格分隔符,就像我在添加到reply@magna_nz由于使用int数组存储字符,因此它会为您提供与每个字符对应的数值,例如,大写A的对应值是65,B的对应值是66,Z的对应值是65+25=90(实际上是66,ASCII值是'B',OP输入的最后一个字符串的最后一个字符。)啊,是的。这确实解释了为什么输出看起来是数组初始值的两倍大。:)
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);
    }
}
public static void printRow(int rowNumber) {
    for (int i = 0; i < 11; i++) {
        System.out.print( (char)epidemicArray[rowNumber][i] + " ");
    }
    System.out.println();
}