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”