需要帮助打印拼字游戏板!

时间:2011-03-12 04:43:08

标签: java

public class Project1 {
    public static void main(String [] args) {
        //ScrabbleLetterBag letterBag = new ScrabbleLetterBag();
        char [][] scrabbleBoard = new char [15][15];

        for (int i = 0; i <=scrabbleBoard.length; i++) {
            if (i != 0) {
                System.out.println(" ");
                System.out.print(i - 1);
            }

            for (int j = 0; j <=scrabbleBoard.length; j++) {
                if (j == 8 && i == 8) {
                    scrabbleBoard[i][j] = '*';
                    System.out.print(scrabbleBoard[i][j]);  
                }
                else {
                    if (i == 0) {
                        System.out.print(" "+j);
                    }
                    else{
                        scrabbleBoard[i][j] = '_';
                        System.out.print(" ");
                        System.out.print(scrabbleBoard[i][j]);
                    }
                }
            }
        }
    }


    /*int count = 0;
    char myLetter;
    while (!letterBag.isEmpty()) {
        count++;
        myLetter = letterBag.getLetter();
        System.out.print(myLetter);
        if (count % 10 == 0)
            System.out.println();
    }*/

}

它应该打印出像

这样的东西
    0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 

 0  _  _  _  _  _  _  _  _  _  _  _  _  _  _  _
 1  _  _  _  _  _  _  _  _  _  _  _  _  _  _  _
 2  _  _  _  _  _  _  _  _  _  _  _  _  _  _  _
 3  _  _  _  _  _  _  _  _  _  _  _  _  _  _  _
 4  _  _  _  _  _  _  _  _  _  _  _  _  _  _  _
 5  _  _  _  _  _  _  _  _  _  _  _  _  _  _  _
 6  _  _  _  _  _  _  _  _  _  _  _  _  _  _  _
 7  _  _  _  _  _  _  _  _  _  _  _  _  _  _  _
 8  _  _  _  _  _  _  _  _  _  _  _  _  _  _  _
 9  _  _  _  _  _  _  _  _  _  _  _  _  _  _  _
10  _  _  _  _  _  _  _  _  _  _  _  _  _  _  _
11  _  _  _  _  _  _  _  _  _  _  _  _  _  _  _
12  _  _  _  _  _  _  _  _  _  _  _  _  _  _  _
13  _  _  _  _  _  _  _  _  _  _  _  _  _  _  _
14  _  _  _  _  _  _  _  _  _  _  _  _  _  _  _

由于某种原因,我的代码无法帮助我修复它plz

3 个答案:

答案 0 :(得分:1)

为什么不首先打印3x3电路板来简化问题?

此时,您的代码将足够小,您可以一次完成一次迭代,并了解代码的行为与您想要的不同。您可以通过添加更多打印语句或使用调试器逐步执行代码来跟踪代码中的位置。

答案 1 :(得分:0)

我认为您需要将其中的一部分分解为单独的for循环,这样您就可以更好地处理正在发生的事情。在打印整个网格之前,在单独的循环中打印顶部的数字。将ij重命名为rowcolumn也可能会对您有所帮助。

现在,您正在i0迭代到14,并打印i - 1,这会为您提供编号为-1的行{ {1}}。但是,在13时你没有打印任何内容,这就是为什么你要将行号i == 0改为0而不是13。随着您的进一步发展,您还会意识到您希望将指定初始空白的代码与打印板的代码分开,否则您将覆盖任何添加的字母。


更新

我认为前进14是正确的方法,但这是我做的第一个改变:

<

您可以看到单独打印列标题会使主循环变得更加简单。我给你开始在列标题中对齐事物,你必须在主循环中做类似的事情以保持排列。

答案 2 :(得分:0)

你可以试试这个,我认为它会产生更好的输出:

public class Project1 {
    public static void main(String [] args) {
        //ScrabbleLetterBag letterBag = new ScrabbleLetterBag();
        char [][] scrabbleBoard = new char [16][16];

        for (int i = 0; i<scrabbleBoard.length; i++) {
            if (i != 0) {
                System.out.println("\t");
                System.out.print(i-1);
            }

            for (int j = 1; j <scrabbleBoard.length; j++) {
                if (j == 8 && i == 8) {
                    scrabbleBoard[i][j] = '*';
                    System.out.print(scrabbleBoard[i][j]);  
                }
                else {
                    if (i == 0) {
                        System.out.print("\t");
                        System.out.print(j-1);
                    }
                    else {
                        scrabbleBoard[i][j] = '_';
                        System.out.print("\t");
                        System.out.print(""+scrabbleBoard[i][j]);
                    }
                }
            }
        }
    }
}