如何只用一个循环和一个内循环打印给定的模式?而不是使用 4 个循环
How can I print the given pattern with just a loop and an inner loop? Instead of using 4 loops
这是代码片段,应该标记主教的领域(棋子)
可悲的是,显然我遇到了数组越界异常 - 有人可以解决这个问题吗?
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;
}
}
期望输出
o o o o o o o x
x o o o o o x o
o x o o o x o o
o o x o x o o o
o o o x o o o o
o o x o x o o o
o x o o o x o o
x o o o o o x o
没必要帮我打印出x或者o,我有一个工作函数,这很好
public void markField(int x, int y){
board[x-1][y-1] = true;
}
两个 for-loops
足以完成它,但是,您将必须有一些额外的变量才能完成它。代码:
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();
}
因为我们使用正确的数组索引调用 markField()
,所以,像这样更改您的 markField()
:
public void markField(int x, int y){
board[x][y] = true;
}
这是代码片段,应该标记主教的领域(棋子)
可悲的是,显然我遇到了数组越界异常 - 有人可以解决这个问题吗?
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;
}
}
期望输出
o o o o o o o x
x o o o o o x o
o x o o o x o o
o o x o x o o o
o o o x o o o o
o o x o x o o o
o x o o o x o o
x o o o o o x o
没必要帮我打印出x或者o,我有一个工作函数,这很好
public void markField(int x, int y){
board[x-1][y-1] = true;
}
两个 for-loops
足以完成它,但是,您将必须有一些额外的变量才能完成它。代码:
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();
}
因为我们使用正确的数组索引调用 markField()
,所以,像这样更改您的 markField()
:
public void markField(int x, int y){
board[x][y] = true;
}