2016-04-10 17 views
-1

これは私のプロジェクトの始まりです:プロジェクトでNullPointerExceptionが発生するのはなぜですか?

//class variables 
private static int numberOfCouples; 
//object arrays 
private static Witch[] witch; 
private static Wizard[] wizard; 
//ranking arrays 
private static int[][] witchPartnerRanking; 
private static int[][] wizardPartnerRanking; 
//proposal array 
private static boolean[][] proposal; 

//DO NOT ALTER THE MAIN METHOD 
public static void main(String[] args) throws FileNotFoundException { 
    go("coven_dance.txt"); 

    System.out.println("Witch array:"); 

    for (int i = 0; i < witch.length; i++) { 
     System.out.printf("Witch %d:, name: %-20s, current partner id: %2d, proposals made: %d%n", 
          witch[ i ].getId(), witch[ i ].getName(), witch[ i ].getParnerWizardId(), witch[ i ].getNumberOfProposals()); 

NullPointerExceptionが最後の行で発生します。私はこれを持っていますが、

private static void go(String fileName) throws FileNotFoundException { 


//1. READ THE FILE 
    Scanner inStream = new Scanner(new File (fileName)); 
    numberOfCouples = inStream.nextInt(); 
    // System.out.println(howManyCouples); 
    //System.out.print(
    inStream.nextLine(); 

//2. CREATE AND POPULATE THE witch ARRAY 
    /*Witch[]*/ witch = new Witch[numberOfCouples*2]; 
    /*int [][]*/ witchPartnerRanking = new int[numberOfCouples*2][numberOfCouples]; 
    for (int i = 0; i < numberOfCouples*2; i++) { 
     if(inStream.hasNextInt()){ 

     //4. CREATE AND POPULATE THE witchPartnerRanking ARRAY 

     int j = 0; 
     while(inStream.hasNextInt() && j<numberOfCouples){ 

      int prefer = inStream.nextInt(); 
       //System.out.println(prefer); 
      witchPartnerRanking[i][j] = prefer; 
     j++; 

     } 
     String bob = inStream.nextLine(); 
      //System.out.println(bob); 
     } 
     else{ 
     String name = inStream.next(); 
      //System.out.println(name); 
     Witch the = new Witch(i, name); 
     witch[i] = the; 

     } 
    } 

私は何が起こっているのか分かりません。誰かが助けることができれば、それは素晴らしいだろう。

は、ここで私はあなたがそれを必要とする場合から読んでいるファイルです:

4 
NannyOgg 0 2 3 1 
TiffanyAching 3 2 0 1 
MagratGarlick 0 3 2 1 
GrannyWeatherwax 0 3 2 1 
TheLibrarian 2 1 3 0 
PonderStibbons 2 1 3 0 
LordVetinari 1 2 0 3 
DEATH 3 2 1 0 
+0

これは、ファイル "coven_dance.txt"が存在しないことを意味します。あなたのクラスパスにないので、このファイルに絶対パスを入れなければなりません。 'go(String fileName)のコードに現れるので、ファイルが見つからなければ値は設定されません。あなたはヌル参照のメソッドを呼び出しました – user1314742

+0

プログラミング言語を教えてタグに含めると、専門家が質問を見つける手助けをします。 – Meier

+0

[Null Pointer Exceptionとは何か、それを修正する方法は?](http://stackoverflow.com/questions/218384/what-is-a-null-pointer-exception-and-how-do) -i-fix-it) – TylerH

答えて

0

あなたwitch配列が初期化されずにアクセスされています。

あなたは宣言されていますが、あなたはそれを初期化する必要があり

が初期化されていないprivate static Witch[] witch;を持っています。これを行う1つの方法は次のとおりです。

private static Witch[] witch = new Witch[10]; // replace 10 with any array size you want 

Javaでは、配列は通常のオブジェクトとして扱われます。 nullというオブジェクトにアクセスするときはいつでも、NullPointerExceptionが得られます。

+0

私はメインに触れることはできません。あなたが私の方法で言ったように私は初期化しようとしましたが、NetBeansはすでにそれが定義されていると言って私に叫んでいます – Shauna

関連する問題