我正在尝试使用我读过的字符串中的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
谢谢,这真是让我烦恼。
答案 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个字符串的长度相同)。
这是我的输出
[编辑]。 @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();
}
这会给你以下结果:
答案 1 :(得分:1)
您使用epidemicArray
获得的最后一个值覆盖整个charz[j]
。这显然是66.实际上你用charz
和最后一个赢得的每个值覆盖整个数组。