eri*_*ell 3 java foreach char multidimensional-array
我正在使用for-each循环在基本java程序中移动2d字符数组.它起作用,除了最后的一小部分.这是我的班级:
static String letters = "abcdefghijklmnopqrstuvwxyz";
public static boolean checkIsNumeric(String s) {
boolean haveBeenNonDigitCharacters = false;
char[] chars = s.toCharArray();
for(char c : chars)
if(!Character.isDigit(c)) {
haveBeenNonDigitCharacters = true;
break;
}
if(haveBeenNonDigitCharacters)
return false;
else
return true;
}
public static char[][] createArray() {
String height;
String width;
Scanner s = new Scanner(System.in);
do {
System.out.println("How tall do you want the array to be?");
height = s.next();
} while(!checkIsNumeric(height));
do {
System.out.println("How wide do you want the array to be?");
width = s.next();
} while(!checkIsNumeric(width));
int intHeight = Integer.parseInt(height);
int intWidth = Integer.parseInt(width);
char[][] chars = new char[intWidth][intHeight];
for(char c[] : chars) {
for(char d : c)
d = ' ';
}
return chars;
}
public static char[][] fillArray(char[][] a) {
int counter = 0;
for(char c[] : a) {
for(char d : c) {
if(counter >= 26)
counter = 0;
d = letters.charAt(counter);
counter++;
}
}
return a;
}
public static void main(String[] args) {
char[][] chars = createArray();
chars = fillArray(chars);
for(char c[] : chars) {
for(char d : c) {
System.out.print(d);
if(d == ' ')
System.out.print("a");
}
System.out.println("");
}
}
Run Code Online (Sandbox Code Playgroud)
基本上,我想做的是采用任何具有用户指定尺寸的二维数组,并用字母表中的字母一遍又一遍地填充它,直到它满了.该checkIsNumeric方法只是检查a String是否为数字,该createArray方法使用用户指定的维度创建2d数组,并且该fillArray方法使用字符串中的字母填充数组.但是当我在main的末尾遍历数组并打印每个字符时,没有任何内容被打印出来.为什么?
更改fillArray到:
public static char[][] fillArray(char[][] a) {
int counter = 0;
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[i].length; j++) {
if(counter >= 26)
counter = 0;
a[i][j] = letters.charAt(counter);
counter++;
}
}
return a;
}
Run Code Online (Sandbox Code Playgroud)
这样a就可以修改实际的数组,而不是for-each循环创建的副本.
这将给出输出(我假设是正确的):
How tall do you want the array to be?
5
How wide do you want the array to be?
4
abcde
fghij
klmno
pqrst
Run Code Online (Sandbox Code Playgroud)
createArray如果您希望每个char都初始化为,则同样如此' '.在main,如果你转换d为int并打印它,你会看到每个char都设置为它的初始值0.
| 归档时间: |
|
| 查看次数: |
5340 次 |
| 最近记录: |