你好,我的所有程序都包含一个2维数组,我在一个循环中读取2个坐标,并试图检查数组中的那些坐标是否已经填充了一个星号,如果这是真的,你想重新表达我的数组的默认值为“ - ”,如果在指定的位置没有星号,你想用星号填充它,我不确定我是否正确的方法。
这是我的代码的一部分。 谢谢大家。
String[][] matrix = new String[5][5];
String asterisc = "*";
String defaultValue = "_";
Scanner sc = new Scanner(System.in);
int a, b;
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix.length; j++) {
matrix[i][j] = defaultValue;
}
}
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix.length; j++) {
System.out.print(matrix[i][j] + "|");
}
System.out.println();
}
a = 0;
b = 0;
while (a >= 0 && b >= 0 && a < matrix.length && b < matrix.length) {
a = sc.nextInt();
b = sc.nextInt();
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix.length; j++) {
if (matrix[a][b].equals(asterisc)) {
matrix[i][j] = defaultValue;
} else {
matrix[a][b] = asterisc;
}
}
}
}
答案 0 :(得分:0)
遗憾的是,您的代码存在许多问题。
此外,您还没有解释您的算法尝试做什么。
简而言之,要将所有星号设置为默认值,您可以执行
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[i].length; j++) {
if matrix[i][j].equals(asterisc){
matrix[i][j]=defaultValue;
}
}
System.out.println();
}
<强>但是强> 你为什么要使用while循环?
为什么使用扫描仪?
为什么a和b初始化为零,但环路需要大于零?
每次(a,b)项目是星号时,你是否真的试图重新初始化整个数组?
答案 1 :(得分:0)
我认为这不是真的。假设你打字了#6; 6 6&#34;在终端中,然后变量a = 6,并且b = 6,这大于数组长度,程序将抛出异常。我认为您可能想要做的事情可以遵循以下代码:
while(true){
a = sc.nextInt();
b = sc.nextInt();
if(a<0||a>matrix.length||b<0||b>matrix.lenght)
break;
}