2017-02-25 55 views
0

我一直在这个项目上工作了一段时间,我仍然无法弄清楚它的第一部分。我试图制作一个字母网格来进行单词搜索,但我似乎无法弄清楚如何打印它。到目前为止,我有:在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++; 
      } 
     } 
    } 
} 

,然后我用toString方法将其打印出来,但我不能在了toString访问阵列。

enpublic 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; 
} 

有人帮忙吗?

回答

0

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

某处类的顶部声明一个数组象下面这样:

String globalArray[][]; 

你的单词搜索方法的右括号之前做这样的事情:你的toString()方法中

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

然后你可以访问globalArray。

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; 
} 

} 
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; 
    } 
}