2013-10-19 87 views
2

我在Java程序中遇到問題。線程「主」中的異常如何解決線程「main」中的異常java.lang.NullPointerException錯誤

java.lang.NullPointerException 
at twoten.TwoTenB.<init>(TwoTenB.java:29) 
at javapractice.JavaPractice.main(JavaPractice.java:32) 
Java Result: 1 

是我得到的錯誤。我真的可以使用一些幫助,因爲我在這一點上我堅持小時......

package twoten; 

import java.util.Scanner; 

public class TwoTenB { 

public TwoTenB() { 
    double percentage; 
    double a[] = null; 
    double total = 0; 
    double var; 
    System.out.print("\tRESULT\n\n"); 
    Scanner scan = new Scanner(System.in); 
    //double[] mark = new double[7]; 
    for (int i = 0; i < 7; i++) { 

     System.out.print("\nMarks in subject " + (i + 1) + "\t:\t"); 
     var = scan.nextDouble(); 

     a[i] = var; 

     total = total + a[i]; 
     //percentage = first * second * third * fourth * fifth * sixth * seventh * 100/700; 
    } 

    percentage = total * 100/700; 

    if (a[0] > 35 && a[1] > 35 && a[2] > 35 && a[3] > 35 && a[4] > 35 && a[5] > 35 && a[6] > 35 && percentage > 35) { 
     if (percentage >= 60) { 
      System.out.print("\nCongratulation!!! you've got FIRST dividion\n"); 
     } else if (percentage >= 45 && percentage < 60) { 
      System.out.print("\nCongratulation!!! you've got SECOND dividion\n"); 
     } else if (percentage >= 35 && percentage < 45) { 
      System.out.print("\nCongratulation!!! you've got THIRD dividion\n"); 
     } 
    } else { 
     System.out.print("\nSORRY!!! you've FAILED\n"); 
    } 
    } 
} 
+0

你沒有初始化'a'這裏'double a [] = null;' –

+0

感謝您的幫助 – Roshan

回答

27

這是問題

double a[] = null; 

由於anullNullPointerException會出現每次你使用它,直到時間你初始化它。所以這個:

a[i] = var; 

會失敗。

一個可能的解決辦法,宣佈時,它是初始化:

double a[] = new double[PUT_A_LENGTH_HERE]; //seems like this constant should be 7 

比解決這個異常IMO更重要的,是事實,你應該學會閱讀堆棧跟蹤和理解它說什麼,所以你可以檢測到問題並解決它。

顯示java.lang.NullPointerException

此異常意味着有一個變量與所用null值。怎麼解決?在使用之前,確保變量不是null

在twoten.TwoTenB(TwoTenB.java:29)

此線具有兩個部分:

  • 首先,示出了其中被拋出錯誤的類和方法。在這種情況下,它在<init>方法TwoTenB類中聲明的包twoten。當您遇到SomeClassName.<init>錯誤消息時,表示在創建該類的新實例時拋出錯誤,例如執行構造函數(在這種情況下,這似乎是問題)。
  • 其次,顯示錯誤被引發的文件和行號位置,位於括號之間。這種方式更容易發現錯誤發生的地方。所以你必須查看文件TwoTenB.java,第29行。這似乎是a[i] = var;

從這一行中,其他行將類似於告訴你錯誤出現的位置。所以在閱讀時:

at javapractice.JavaPractice.main(JavaPractice。Java的:32)

這意味着你試圖實例化JavaPracticejavapractice包中聲明的main方法內TwoTenB對象引用。

+0

它的工作。感謝您的幫助 – Roshan

+0

@Roshan歡迎您。請務必閱讀我的答案的更新 –

相關問題