2014-03-19 117 views
-1

你好,我得到了與我在這裏的程序有點問題,是一個代碼空指針異常帕斯卡三角

public class zad1 
{ 
    static public class WTP 
    { 
     int[] wiersz; 

     int silnia(int a) 
     { 
      if (a < 1) 
      { 
       return 1; 
      } 
      else 
      { 
       return a * silnia(a - 1); 
      } 
     } 

     WTP(int n) 
     { 
      int wiersz[] = new int[n+1]; 

      for(int i = 0; i<=n; i++) 
      { 
       wiersz[i] = silnia(n)/(silnia(n - i) * silnia(i)); 
      }    
     } 
    } 


    public static void main(String args[]) 
    { 
     int a1 = Integer.parseInt(args[0]); 
     WTP tablica = new WTP(a1); 

     for(int i = 1; i<=args.length; i++) 
     { 
      System.out.println(tablica.wiersz[i]); 
     } 
    } 
} 

而且我乳寧之後得到一個錯誤:在主線程java.lang中

異常.nu​​llpointerexpception zad1.java:58。

的58行是:System.out.println(tablica.wiersz[i]);

方案的一點是要創建帕斯卡三角的線把一個值轉換成它。之後,當它在控制檯上運行,例如java zad1 4 0 1時,它應該計算4行三角形中的值並打印4後給出的位置值。

任何想法是什麼錯? :/ 感謝您幫助其運行,但有一個問題,其計數位置+ 1而不是位置,例如在4行中的值應爲0-1,1-4,2-6,3-4,但其顯示0-4,1-6,2-4我改變爲(int i = 1; i < = args.length; i ++)到i = 0但它並沒有幫助:/

回答

2

您正在創建一個局部變量wiersz裏面的WTP構造函數。

WTP構造函數中將行更改爲this.wiersz = new int[n+1];

+0

我嘗試並得到4個錯誤:使用符號[,],; ,最後一句說這不是35行中的一句話:wiersz [] = new int [n + 1]; – user3438022

+0

什麼是錯誤,你在哪裏得到它們? – anirudh

+0

當我嘗試更改爲this.wiersz [] ...編譯時出現錯誤zad1.java:35表達式的非法開始及其對[]符號的指向 – user3438022