Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何仅使用一个循环和一个内循环打印给定图案?而不是使用4个循环_Java_Loops_Indexoutofboundsexception_Chess - Fatal编程技术网

Java 如何仅使用一个循环和一个内循环打印给定图案?而不是使用4个循环

Java 如何仅使用一个循环和一个内循环打印给定图案?而不是使用4个循环,java,loops,indexoutofboundsexception,chess,Java,Loops,Indexoutofboundsexception,Chess,这是代码片段,应该标记主教(象棋人物)的字段。 很遗憾,很明显我得到了一个数组越界异常-有人能解决这个问题吗? int i = 1, j = 1; while (i <= 8) { board.markField(9-i, i); i++; while (j <= 8) { board.markField(j, i); // here is the error j++; // j =2

这是代码片段,应该标记主教(象棋人物)的字段。
很遗憾,很明显我得到了一个数组越界异常-有人能解决这个问题吗?

int i = 1, j = 1;

 while (i <= 8) {
      board.markField(9-i, i);

      i++;

      while (j <= 8) {

          board.markField(j, i); // here is the error
          j++;      // j =2
          break;
      }
  }
没有必要,为了帮助我打印出xo,我有一个工作功能,这非常好

public void标记字段(int x,int y){
董事会[x-1][y-1]=正确;
}

两个
for循环
足以完成它,但是,您必须有一些额外的变量才能完成它。代码:

int start = 0, end = 7;
boolean flag = false;
for(int i= 0; i<8; i++)
{
    if(i > 0)
        flag = true;
    for(int j= 0; j<8; j++)
    {
        if(flag && j==start)
        {
            //System.out.printf("x ");
            board.markField(i,j);
            start++;
            if(start == end+1)
                end--;
            flag = false;
            continue;
        }

        if(j==end)
        {
            //System.out.printf("x ");
            board.markField(i,j);
            end--;
            continue;
        }
        //System.out.printf("o ");
        board.markField(i,j);
    }
    //System.out.println();
}

您在哪一行获得此异常?请提供更多的代码,以便我们能够更好地理解您的游戏逻辑。现在应该更容易理解您的代码将所有字段标记为true,但我在屏幕上只看到“x”而没有“o”。所有字段意味着什么?所有正确的字段或整个电路板阵列?“我在屏幕上只看到‘x’和‘o’”是的,这是你在问题中指出的屏幕上应该看到的。我发布了输出,我想用代码实现的……是的,我的代码给出的输出与你发布的相同,你可以取消注释
Syste,.out.println()
行,然后自己查看。对不起,我不清楚你对我的代码有什么问题,o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o
int start = 0, end = 7;
boolean flag = false;
for(int i= 0; i<8; i++)
{
    if(i > 0)
        flag = true;
    for(int j= 0; j<8; j++)
    {
        if(flag && j==start)
        {
            //System.out.printf("x ");
            board.markField(i,j);
            start++;
            if(start == end+1)
                end--;
            flag = false;
            continue;
        }

        if(j==end)
        {
            //System.out.printf("x ");
            board.markField(i,j);
            end--;
            continue;
        }
        //System.out.printf("o ");
        board.markField(i,j);
    }
    //System.out.println();
}
public void markField(int x, int y){

 board[x][y] = true;
}