2014-08-29 66 views
0

我在createPathingTriangle()方法中創建了createTriangle()的陰影。 createTriangle工作得很好,但是當我創建使用String而不是int的相同尺寸的createPathingTriangle時,新的三角形開始拋出NPE。字符串數組中的空指針異常

那的投擲它的線是 -

pathingTriangle[y][x] = new String("00" + String.valueOf(x)); 

即該填充它的第一行。我查了一下,在createPathingTriangle中的代碼周圍灑滿了「新」,但它似乎並沒有解決問題..我假設它與int是一個基元但String不是這樣的事實有關,但幾小時的擺弄和沒有給出。

private int[][] createTriangle() { 
    triangle = new int[triangleSize][]; 
    for (int y = 0; y < triangle.length; y++){ 
     int [] xAxis = new int[triangle.length - y]; 
     for (int x = 0; x < xAxis.length; x++){ 
      xAxis[x] = (int) (Math.random() * 100); 
     } 
     triangle[y] = xAxis; 
    } 
    printTriangle(triangle); 
    return triangle; 
} 

private String[][] createPathingTriangle() { 
    pathingTriangle = new String[triangleSize][]; 

    for (int y = 0; y < pathingTriangle.length; y++){ 
     for (int x = 0; x < pathingTriangle.length - y; x++){ 
      if (x < 10){ 
       pathingTriangle[y][x] = new String("00" + String.valueOf(x)); 
      } 
      else if (x < 100){ 
       pathingTriangle[y][x] = new String("0" + String.valueOf(x)); 
      } 
      else{ 
       pathingTriangle[y][x] = new String(String.valueOf(x)); 
      } 
     } 
    } 
    return pathingTriangle; 
} 
+0

第一funnction做的第二個方面,你可以發佈一個堆棧跟蹤? – Fildor 2014-08-29 08:42:06

+0

請在NPE發生的地方標註一行 – talex 2014-08-29 08:42:12

+1

首先,不要在創建新的String對象時不要使用'new String();'。其次,你可以提供一些堆棧跟蹤和更多的信息 – Eypros 2014-08-29 08:42:40

回答

3

你永遠不會初始化數組pathingTriangle = new String[triangleSize][];

這是在這裏int [] xAxis = new int[triangle.length - y];

+0

感謝您的幫助。我將代碼恢復到了原來的狀態,這一切都以某種方式實現。奇怪的是,我最初剛剛複製並粘貼了代碼,並用String替換了int,並且它不僅僅是從一開始就工作。 – stravinsky7 2014-08-29 08:54:56