2014-03-19 139 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