Java restartGame()方法返回错误
我大学的分级单元是用Java创建一个王冠与锚骰子游戏。不必过多地讨论规则等,以下是一些相关的要点Java restartGame()方法返回错误,java,eclipse,netbeans,ide,Java,Eclipse,Netbeans,Ide,我大学的分级单元是用Java创建一个王冠与锚骰子游戏。不必过多地讨论规则等,以下是一些相关的要点 玩家在启动时输入他们的名字,我的程序应该检查playerName.ser的源文件夹以加载他们的游戏状态 此文件中的玩家信息是他们的姓名、当前赌注和银行家赌注(如果保存的玩家文件存在,则应重新加载此信息) 如果它不存在,玩家会被告知这一点,并询问他们想要玩什么赌注,并创建一个新的玩家对象 我将发布我为restartGame()编写的代码,但我遇到了几个星期以来一直在努力解决的错误。感觉就像我的头撞
- 玩家在启动时输入他们的名字,我的程序应该检查playerName.ser的源文件夹以加载他们的游戏状态
- 此文件中的玩家信息是他们的姓名、当前赌注和银行家赌注(如果保存的玩家文件存在,则应重新加载此信息)
- 如果它不存在,玩家会被告知这一点,并询问他们想要玩什么赌注,并创建一个新的玩家对象
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);
}
这是我在游戏类开始时声明的变量
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;
导入java.io.BufferedReader;
导入java.io.File;
导入java.io.FileInputStream;
导入java.io.FileNotFoundException;
导入java.io.FileOutputStream;
导入java.io.FileReader;
导入java.io.IOException;
导入java.io.ObjectInputStream;
导入java.io.ObjectOutputStream;
导入java.util.ArrayList;
导入java.util.Scanner;
公开课游戏
{
私人球童[]骰子;
私人玩家;
私人ArrayList赌注;
public UserInterface ui=new UserInterface();
公共字符选项;
公共扫描仪输入;
您没有在任何地方实例化输入。您需要
input=新扫描仪(System.in)
此错误意味着变量输入
为空。我们可以看看您在哪里实例化此变量吗?感谢您的回复…请参阅编辑的post bud。您在mate上的位置我一点也不…第一个playerName变量是使用用户界面类的方法设置的..我来试一试。这解决了问题伙计们…两周以来我一直被困在当然,非常感谢。我们都经历过。:NullPointerException
可能是Java中最常见的错误。@newCoder1888别忘了接受答案。:)抱歉,伙计,刚才看到了…绿色勾号是吗?是的,就是那个。干杯!
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;