我有一个电路板([17] [17])并且我在其中放置了行和列。我想如果给出的字的位置比电路板大,那么会显示一条消息而你应该再次给出行和列。
**Board class**
......
public void placeWord(char[][] board, String word, int x, int y)
for (int i = 0; i < word.length(); i++)
{
if (y + i >= board[x].length)
{
System.out.println("The board is smaller!!");
Board b=new Board();
int a,r;
System.out.println("Give row and column again");
a=in.nextInt();
r=in.nextInt();
b.placeWord(board, word, a, r);
}
else {
board[x][y + i] = word.charAt(i);
}
}
当我给a = 3且r = 5时,它仍然打印出我“电路板更小!!”并希望再次给出新的价值。有谁知道如何解决这个问题?
修改
**main()**
board b=new board();
String s="abc";
int x=2,y=20;
b.placeWord(Board, s, x, y);
for(int i=0;i<Board.length;i++)//prints the board
{
System.out.println(Board[i]);
}
答案 0 :(得分:0)
来自a=3 and r=5
我怀疑你已经失败了把这个词放在第一位并输入了一个新的行/列。
在这种情况下,“旧”for循环尚未完成,并且在调用b.placeWord(...);
后将继续放置字母(只要剩余一些)。
避免这种情况的一种方法是在调用break;
后通过简单的b.placeWord(...);
语句打破循环。
注意:第二次将这个单词填入您之后放弃的新创建的棋盘b
中(在您向我们展示的代码中,它永远不会被访问)。另外,如果单词适合(实际上可以在没有循环的情况下完成:y+word.length()<=board[x].length()
),您可能首先测试,然后填写字母。否则,失败尝试的剩余部分将留在董事会上。
答案 1 :(得分:0)
**Board class**
......
public void placeWord(char[][] board, String word, int x, int y)
if (y + word.length() >= board[x].length)
{
// don't loop, ask for another position to put word
System.out.println("The board is smaller!!");
Board b=new Board();
int a,r;
System.out.println("Give row and column again");
a=in.nextInt();
r=in.nextInt();
b.placeWord(board, word, a, r);
} else
{
// already done the checking, don't need to worry here
for (int i = 0; i < word.length(); i++)
{
board[x][y + i] = word.charAt(i);
}
}