2015-01-17 42 views
0
public class chocolatecake 
{ 
    int rows,cols; 
    public chocolatecake(int r, int c) 
    { 
     rows = r; 
     cols = c; 
    } 
    private String letterBlock[][]; 

    public void fillBlock(String str) 
    { 
     boolean hasExtra; 
     int tracker=0; 
     for(int y=0;y<rows;y++) 
     { 
      for(int x=0;x<cols;x++) 
      { 
       letterBlock[y][x] = str.substring(tracker, tracker+1); 
       System.out.println(letterBlock[y][x]); 
       tracker++; 
      } 
     } 
    } 
} 

所以這個程序的重點是取一個字符串並將其放入一個數組中,首先按行的順序排列,然後按列的主順序放入一個不同的數組大小,但是我在這裏停留在編譯器說的地方nullpointerexception at線21給我一個nullpointerexception錯誤的基本java算法?

letterBlock[y][x] = str.substring(tracker, tracker+1); 
+1

任何stacktrace? – roeygol

+0

Java約定很明顯 - 你的課應該是駱駝式的('ChocolateCake')。這與你的直接問題無關,但它是你應該知道的。 – eebbesen

回答

0

rowscols被假定爲空,在這種情況下,你不打電話給你chocolatecake功能

+0

他們是在一個構造函數,雖然...我有一個測試儀類與變量的數字 – benrosenberg

1

分配在構造函數中的字符串數組:

letterBlock = new String[r][c]; 

這樣的:

public chocolatecake(int r, int c) 
{ 
    rows = r; 
    cols = c; 
    letterBlock = new String[r][c]; 

    // Not like this, it will create a local variable: 
    // String letterBlock = new String[r][c]; 
} 
private String letterBlock[][]; 

另一個可能的原因是一個NullPointerException是,如果str爲null。如果它不夠長,您將得到一個IndexOutOfBoundsException。

+0

我已經把這個代碼在構造函數,但它看起來不正確,我得到一個錯誤。你能解釋一下在哪裏分配字符串嗎? – benrosenberg

+0

@benrosenberg看到編輯,希望它能爲你澄清它 – samgak

1

您需要初始化數組letterBlock。 例如

String letterBlock[][] = new String[10][2];