gpt4 book ai didi

java - For-each并分配给二维数组Java

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:15:28 25 4
gpt4 key购买 nike

我在基本 Java 程序中使用 for-each 循环遍历二维字符数组。它有效,除了最后的一小部分。这是我的类(class):

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("");
}
}

基本上,我想做的是采用任何具有用户指定尺寸的二维数组,并用字母一遍又一遍地填充它,直到它填满。 checkIsNumeric 方法只是检查 String 是否为数字,createArray 方法创建具有用户指定维度的二维数组,以及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;
}

因此实际数组 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

如果您希望每个 char 都被初始化为 ' ',那么 createArray 也是如此。在 main 中,如果将 d 转换为 int 并打印它,您将看到每个 char 都已设置到它的初始值为 0。

关于java - For-each并分配给二维数组Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8290554/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com