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;
}
}
没有必要,为了帮助我打印出x或o,我有一个工作功能,这非常好
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;
}