在toString方法中使用数组

时间:2017-02-25 23:54:21

标签: java arrays tostring

我已经在这个项目上工作了一段时间,我仍然无法弄清楚它的第一部分。我正在尝试制作一个字母网格来进行单词搜索,但我似乎无法弄清楚如何打印它。到目前为止,我有:

import javax.swing.SwingUtilities;

public class Driver {
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                new LeFrame();
            }
        });
    }
}

然后我必须使用toString方法打印它,但我无法访问toString中的数组。

public wordsearch(int row, int col, String letters){
    if (letters.length()== row*col){
        gridletters= letters;
        gridrow=row;
        gridcol=col;
        letters= letters.toUpperCase();

        String array[][]= new String[row][col];

        int character=0;
        for(int rowNum =0; rowNum<row; rowNum++){
            for(int colNum=0; colNum<col; colNum++){
                array[rowNum][colNum] = letters.charAt(character) + "";
                character++;
            }
        }
    }
}
有人帮忙吗?

3 个答案:

答案 0 :(得分:2)

您无法访问另一个方法体内声明的局部变量(除非您从第一个方法调用第二个方法并将该变量作为参数传递)。您必须在课程级别声明它。

public class YourClass {

private String array[][];

public wordsearch(int row, int col, String letters){
    if (letters.length()== row*col){
    gridletters= letters;
    gridrow=row;
    gridcol=col;
    letters= letters.toUpperCase();

    array= new String[row][col];

    int character=0;
    for(int rowNum =0; rowNum<row; rowNum++){
        for(int colNum=0; colNum<col; colNum++){
            array[rowNum][colNum] = letters.charAt(character) + "";
            character++;
        }
    }}}

public String toString(){
    String grid= "";
    for(int index=0; index<gridrow; index++){
        for(int index2=0; index2<gridcol; index2++){
            grid+= array[index][index2]+ " ";
        }
        grid+= "\n";
    }
    return grid;
}

}

答案 1 :(得分:0)

  

然后我必须使用toString方法打印它,但我不能   访问toString中的数组。

在你的类顶部的某个地方声明一个如下数组:

String globalArray[][];

在wordSearch方法的右括号之前执行以下操作:

globalArray = array; // point it to the local array

然后在您的toString()方法中,您可以访问globalArray。

答案 2 :(得分:0)

array应该是实例变量而不是局部变量。通过这种方式,可以从您班级中的其他方法访问它。

您可以在此处找到有关实例和局部变量之间差异的更多信息:https://stackoverflow.com/a/2088370/6245535

例如:

public class WordSearch {

    private String array[][];  // declare as instance variable

    public WordSearch (int row, int col, String letters) {
        if (letters.length() == row * col) {
            gridletters = letters;
            gridrow = row;
            gridcol = col;
            letters = letters.toUpperCase();

            array = new String[row][col];  // initialize the instance variable

            int character = 0;
            for (int rowNum = 0; rowNum < row; rowNum++) {
                for (int colNum = 0; colNum < col; colNum++) {
                    array[rowNum][colNum] = letters.charAt(character) + "";
                    character++;
                }
            }
        }
    }

    @Override
    public String toString() {
        String grid= "";
        for(int index = 0; index < gridrow; index++) {
            for(int index2 = 0; index2 < gridcol; index2++) {
                grid += array[index][index2]+ " ";
            }
            grid += "\n";
        }
        return grid;  
    }
}