Java 如何更改二维数组中的值
此操作的输出为Java 如何更改二维数组中的值,java,Java,此操作的输出为 - - - - - - - - - 1 2 3 4 5 6 7 8 9 如果输入1,我希望新输出为 X - - - - - - - - 1 2 3 4 5 6 7 8 9 我尝试过使用布尔语句和while(true),但我就是想不出来。。 下面是一些示例代码 String table[][]; table = new String[3][3]; int options[][]={{1,2,3},{4,5,6},{7,8,9}};
- - -
- - -
- - -
1 2 3
4 5 6
7 8 9
如果输入1,我希望新输出为
X - -
- - -
- - -
1 2 3
4 5 6
7 8 9
我尝试过使用布尔语句和while(true),但我就是想不出来。。
下面是一些示例代码
String table[][];
table = new String[3][3];
int options[][]={{1,2,3},{4,5,6},{7,8,9}};
while(true){
for (int i = 0; i < table.length; i++) {
for (int j = 0; j < table[i].length; j++) {
table[i][j] = "—";
System.out.print(table[i][j] + " ");
} //FOR LOOP 2
System.out.println();
}// FOR LOOP 1
for (int i = 0; i < options.length; i++) {
for (int j = 0; j < options[i].length; j++) {
System.out.print(options[i][j]+ " ");
}// FOR LOOP 2(2)
System.out.println();
}// FOR LOOP 1(1)
// ASK FOR MOVE ONE
System.out.println("Player One (x) : Enter a move from 1-9 >>> ");
int x = in.nextInt();
if (x==1){
table[0][0]="x";
return true; //DOES NOT WORK. I WANT IT TO RETURN TO TOP WITH THE VALUE table[0][0] = x
}
字符串表[];
表=新字符串[3][3];
int选项[][]={{1,2,3},{4,5,6},{7,8,9};
while(true){
对于(int i=0;i>”开始的移动);
int x=in.nextInt();
如果(x==1){
表[0][0]=“x”;
return true;//不起作用。我希望它返回顶部,值表[0][0]=x
}
当我输入1时,我的输出仍然是
- - -
- - -
- - -
1 2 3
4 5 6
7 8 9使用布尔变量标志检查条件
boolean flag=false;
如果循环中指定标志为true
if (x==1){
table[0][0]="x";
flag=true;
}
使用do…while循环代替while循环
do{
}while(flag)
更新代码如下:
boolean flag=false;
do{
for (int i = 0; i < table.length; i++) {
for (int j = 0; j < table[i].length; j++) {
table[i][j] = "—";
System.out.print(table[i][j] + " ");
} //FOR LOOP 2
System.out.println();
}// FOR LOOP 1
for (int i = 0; i < options.length; i++) {
for (int j = 0; j < options[i].length; j++) {
System.out.print(options[i][j]+ " ");
}// FOR LOOP 2(2)
System.out.println();
}// FOR LOOP 1(1)
// ASK FOR MOVE ONE
System.out.println("Player One (x) : Enter a move from 1-9 >>> ");
int x = in.nextInt();
if (x==1){
table[0][0]="x";
flag=true;
}
}while(flag);
boolean标志=false;
做{
对于(int i=0;i>”开始的移动);
int x=in.nextInt();
如果(x==1){
表[0][0]=“x”;
flag=true;
}
}而(旗),;
您应该删除阵列的初始化,使其位于while循环之外:
// init the array
for (int i = 0; i < table.length; i++) {
for (int j = 0; j < table[i].length; j++) {
table[i][j] = "—";
}
}
while(true){
// print the array
for (int i = 0; i < table.length; i++) {
for (int j = 0; j < table[i].length; j++) {
System.out.print(table[i][j] + " ");
}
System.out.println();
}
for (int i = 0; i < options.length; i++) {
for (int j = 0; j < options[i].length; j++) {
System.out.print(options[i][j]+ " ");
}// FOR LOOP 2(2)
System.out.println();
}// FOR LOOP 1(1)
// ASK FOR MOVE ONE
System.out.println("Player One (x) : Enter a move from 1-9 >>> ");
int x = in.nextInt();
if (x==1){
table[0][0]="x";
}
}
//初始化数组
对于(int i=0;i>”开始的移动);
int x=in.nextInt();
如果(x==1){
表[0][0]=“x”;
}
}
这样,就不会在循环的每次迭代中重置数组
此外,不要在您的条件中放入return语句,因为这样会中断循环,并且不会打印更新的数组。但是要修复代码,请执行以下操作。请重新选择解决方案以简化操作
int userInput = -1;
while(true){
for (int i = 0; i < table.length; i++) {
for (int j = 0; j < table[i].length; j++) {
if (userInput ==1){
table[0][0]="x";
}else {
table[i][j] = "—";
}
System.out.print(table[i][j] + " ");
} //FOR LOOP 2
System.out.println();
}// FOR LOOP 1
for (int i = 0; i < options.length; i++) {
for (int j = 0; j < options[i].length; j++) {
System.out.print(options[i][j]+ " ");
}// FOR LOOP 2(2)
System.out.println();
}// FOR LOOP 1(1)
// ASK FOR MOVE ONE
System.out.println("Player One (x) : Enter a move from 1-9 >>> ");
userInput = in.nextInt();
intuserinput=-1;
while(true){
对于(int i=0;i>”开始的移动);
userInput=in.nextInt();
这与2d数组有什么关系?现在还不清楚你在问什么我只是添加了一些代码@kickbutowski如果你输入另一个x会发生什么事?@GautamSavaliya没关系,是吗?你只需更改索引值就行了。你不会添加更多项目或减少项目希望我这样做时,我的程序不会运行back到循环的顶部,虽然我这样做了,但它仍然没有添加“x”