2016-04-25 18 views
2

Javaで、ユーザーが入力した文字を入力するだけでなく、行ごとに必要な文字数を入力するためのキーパッドを作成しようとしています。その後、必要な行数に文字を印刷する必要があり、そう"abcdefgh"が入力されると、目的の行数が4である場合には、印刷する必要があります:2D配列の文字列を特定の行数に出力する

abcd 
efgh 

私はそれが動作するように取得する方法についてこだわっています。

public class Keypad { 

char [][] letters; 

public Keypad(String chars, int rowLength) { 
    int counter = 0; 
    for (int i = 0; i<chars.length(); i++){ 
     counter++; 
    } 
    letters = new char[rowLength][counter/rowLength]; 
} 

public String toString() { 
    String s = " "; 

    for (int row=0; row<letters.length; row=row+1) { // Over rows 
     for (int col=0; col<letters[row].length; col=col+1) { 
      s = s + letters[row][col]; 
     } 
     s = s + "\n"; 
    } 
    return "the keypad is" + s; 
} 

答えて

3

toString()方法のロジックは正常に見えるが、あなたは、コンストラクタでletters配列を移入しませんでした。したがって、コンストラクタに次のようなものを追加する必要があります。

public Keypad(String chars, int rowLength) { 
     // you don't need to count the length with a loop 
     int nRow = chars.length()/rowLength; 
     if(chars.length()%rowLength!=0) nRow++; 
     letters = new char[nRow][rowLength]; 

     for(int i = 0, n = 0 ; i < letters.length ; i++) { 
      for(int j = 0 ; n < chars.length() && j < letters[i].length ; j++, n++) { 
       letters[i][j] = chars.charAt(n); 
      } 
     } 
    } 
関連する問題