2017-02-14 4 views
0

大学で私の採点単位は、JavaでCrown &アンカーダイスゲームを作成することです。ルールなどにあまりに移動することなく、ここに関連するだろうポインタのいくつかはあるエラーを返すrestartGame()メソッド

  • プレーヤーが起動時に自分の名前を入力します..私のプログラムは、ロードするプレイヤー名の.serのソースフォルダをチェックする必要があります彼らのゲーム状態。
  • このファイルのプレーヤー情報は、名前、現在のステーク、銀行家のステークスです(プレイヤーがファイルを保存している場合は、この情報を再読み込みする必要があります)
  • これが存在しない場合は、彼らがプレイしたい、新たなプレーヤーオブジェクトが作成される。

私はrestartGame(を持っているコードを投稿します)が、私は今、数週間で苦労されたエラーを取得しました。私は壁に頭を向けているように感じる。

助けていただければ幸いです。

public void restartGame() throws IOException 
{ 
    //ask player for players name and save in playerName 
    String playerName = ui.getName(); 

    System.out.println("Your name is : " + playerName); 

      File varTmpDir = new File("saves/" + playerName.toLowerCase() + ".ser"); 
      boolean exists = varTmpDir.exists(); 

      if(exists == true) 
      { 
       Player tempPlayer = null; 

    try  
      { 
       FileInputStream fileIn = new FileInputStream(playerName + ".ser"); 
       ObjectInputStream in = new ObjectInputStream(fileIn); 
       tempPlayer = (Player) in.readObject(); 
       in.close(); 
       fileIn.close(); 
       String restartYN = ""; 
        while(restartYN.equals("") || (restartYN.toUpperCase().charAt(0) != 'Y' && restartYN.toUpperCase().charAt(0) != 'N')) 
      { 
       System.out.println("Match found with £"+ tempPlayer.getStake() +" stake and £" + tempPlayer.getBanker() +" banker do you want to continue Y/N? "); 
       restartYN = input.next(); 
      } 
      if(restartYN.toUpperCase().charAt(0) == 'Y'){ 
       aPlayer = new Player(playerName,tempPlayer.getStake(),tempPlayer.getBanker()); 
      } 
      }catch(IOException i){ 
      System.out.println("Save corrupt starting new game. \n"); 
      }catch(ClassNotFoundException c) { 
      System.out.println("Save corrupt starting new game. \n"); 
      } 
      } 

      int pStake = 0; 
    do{ 
     System.out.print("No save loaded starting new game enter stake : £"); 
      String input2 = input.next();**//THIS IS THE ERROR LINE 
     try { 
      pStake = Integer.parseInt(input2); 
      if(pStake <1){ 
       System.out.println("ERROR: must be a number above 0 with no decimal points less than 2147483648."); 
      } 
     } catch (NumberFormatException ex){ 
      System.out.println("ERROR: must be a number above 0 with no decimal points less than 2147483648."); 
     } 
    }while(pStake<1); 

    aPlayer = new Player(playerName,pStake,100);  
    } 

コンソールアプリケーションを実行した後、私は選手たちの名前を尋ねたのですが、その後、次のエラーが発生..

run: Please enter your name and press ENTER chris Your name is : chris Exception in thread "main" java.lang.NullPointerException at cadice.Game.restartGame(Game.java:96) at cadice.Game.play(Game.java:30) at cadice.CrownAndAnchor.main(CrownAndAnchor.java:14) No save loaded starting new game enter stake : £C:\Users\chris\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: Java returned: 1 BUILD FAILED (total time: 7 seconds)

96のコードは、コードの行を指し、この行を私がコメントしている中で横にrestartGame()のコードで:この男に

String input2 = input.next(); 

かなり新しい私と一緒にクマ...これはゲームのクラスの開始時に宣言した私の変数..です

import java.io.BufferedReader; 
import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.FileOutputStream; 
import java.io.FileReader; 
import java.io.IOException; 
import java.io.ObjectInputStream; 
import java.io.ObjectOutputStream; 
import java.util.ArrayList; 
import java.util.Scanner; 

    public class Game 
    { 
    private CADice[] dice; 
    private Player aPlayer; 
    private ArrayList<Bet> bets; 
    public UserInterface ui = new UserInterface(); 
    public char option; 
    public Scanner input; 
+1

ようなものが必要。この変数をどこでインスタンス化するのか分かりますか? – Epitouille

+0

返信ありがとう...編集後のポストバウンドを参照してください。 – newCoder1888

+0

あなたの仲間の位置私は全くありません...最初のplayerName変数はユーザーインターフェイスクラスのメソッドを使って設定されています。これはbashに与えられます。 – newCoder1888

答えて

0

あなたはどこにでも入力を開始していません。あなたは、このエラーは、変数 `input`がヌルであることを意味

input = new Scanner(System.in)

+0

これは問題の男を修正しました... 2週間私はこれに固執してきました。月の上に絶対にありがとう。 – newCoder1888

+0

我々はすべてそこにいた。 :) 'NullPointerException'はおそらくあなたがJavaで得る最も一般的なエラーです。 –

+0

@ newCoder1888答えを受け入れることを忘れないでください。 :) –

関連する問題