大学で私の採点単位は、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;
ようなものが必要。この変数をどこでインスタンス化するのか分かりますか? – Epitouille
返信ありがとう...編集後のポストバウンドを参照してください。 – newCoder1888
あなたの仲間の位置私は全くありません...最初のplayerName変数はユーザーインターフェイスクラスのメソッドを使って設定されています。これはbashに与えられます。 – newCoder1888