我如何指定董事会结束的位置?

时间:2011-12-29 17:56:43

标签: java

我有一个电路板([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]);

         }

2 个答案:

答案 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);
      }
    }