gpt4 book ai didi

Java 2D Array with Strings,一个错误,需要添加一个简单的功能

转载 作者:行者123 更新时间:2023-11-30 06:39:54 27 4
gpt4 key购买 nike

所以我正在开发一个简单的程序,询问用户需要多少列和行,然后生成一个具有上述大小的字符串,这是代码(改编自某些开发人员为回答另一个问题所做的代码)

String[][] grid = new String[int1][int2];
String AB = "_W";
SecureRandom rnd = new SecureRandom();
for (int i = 0; i < grid.length; i++) {
StringBuilder sb = new StringBuilder(int1);
for (int j = 0; j < grid[i].length; j++) {
sb.append(AB.charAt(rnd.nextInt(AB.length())));
sb.toString();
grid[i][j] = sb.toString();
}
}

for (int i = 0; i < grid.length; i++) {
for (int j = 0; j < grid[i].length; j++) {
System.out.print(""+grid[i][j]);
}
System.out.println();
}

}

现在,这有一个我似乎无法修复的错误,我通过 int1 和 int2 收集所需的大小(int1 是行,int2 是列),但是输出尊重行数(int2),但不尊重行数似乎尊重列号。这是一个示例,如果我定义 int1 (rows) = 3 和 int2 (columns) = 4,则输出如下:

_____W__W_
_____W__W_
_____W__WW

如您所见,有 3 行但10 列,这是为什么?我该如何修复它?

我还需要实现一个我似乎无法理解的简单插件。在第一行中,需要有(在随机位置,只需是第一行)字符“S”,在最后一行中需要有字符“E”(也在随机位置)。它们无法添加各自列的大小,因此需要替换“_”或“W”。有什么帮助吗? :D

最佳答案

您的问题是您没有清除 StringBuilder。在内循环中。所以第一次你写 1 个字符,而不是 2 个字符以及 3 和 4(总共 10)

你可以这样修复它:

String[][] grid = new String[int1][int2];
String AB = "_W";
SecureRandom rnd = new SecureRandom();
for (int i = 0; i < grid.length; i++) {
StringBuilder sb = new StringBuilder(int1);
for (int j = 0; j < grid[i].length; j++) {
sb.setLenght(0); // <-- To reset the data
sb.append(AB.charAt(rnd.nextInt(AB.length())));
sb.toString(); // You can delete this line which does nothing.
grid[i][j] = sb.toString();
}
}

for (int i = 0; i < grid.length; i++) {
for (int j = 0; j < grid[i].length; j++) {
System.out.print(""+grid[i][j]);
}
System.out.println();
}

但我会完全避免使用 SB...以及 S 和 E

String[][] grid = new String[int1][int2];
String AB = "_W";
SecureRandom rnd = new SecureRandom();
for (int i = 0; i < grid.length; i++) {
for (int j = 0; j < grid[i].length; j++) {
grid[i][j] = "" + AB.charAt(rnd.nextInt(AB.length()));
}
}

for (int i = 0; i < grid.length; i++) {
for (int j = 0; j < grid[i].length; j++) {
System.out.print(""+grid[i][j]);
}
System.out.println();
}

grid[0][rnd.nextInt(int2)] = "S";
grid[int1-1][rnd.nextInt(int2)] = "E";

关于Java 2D Array with Strings,一个错误,需要添加一个简单的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44549373/

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