2017-02-25 10 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の配列にアクセスできません。

あなたのクラスのトップのどこかに

以下のような配列を宣言:あなたのtoString()メソッド内で、その後

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

:あなたのワードサーチ方法の閉じ括弧の前に

String globalArray[][]; 

はこのような何かをglobalArrayにアクセスできます。

2

1つのメソッド本体の中で宣言されたローカル変数に別のメソッド本体でアクセスすることはできません(最初のメソッドから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; 
    } 
} 

現在のインスタンスとローカル変数の違いについての詳細情報を見つけることができます

関連する問題