Java 如何让我的FileWriter找到下一行,而不是写在下面
因此,我已经看到了很多类似的问题,但似乎无法找到答案,如果这是一个重复的抱歉。因此,我正在为black jack创建一个java程序,我希望有一个适当的系统来保存用户拥有的芯片。我可以让它工作,但每当我试图让它保存它只是似乎覆盖了什么已经存在。 例子 用户输入名称:Bob 系统自动知道有筹码,所以当他们按下按钮保存游戏时,它会在上面写上名字和筹码,就像这样 鲍勃 200(或他们有多少芯片) 当一个新用户输入他们的名字并保存时,问题就出现了,比如说sally是在保存而不是去 鲍勃 二百 萨莉 三百 是的 萨莉 三百 并完全删除鲍勃Java 如何让我的FileWriter找到下一行,而不是写在下面,java,file,filewriter,Java,File,Filewriter,因此,我已经看到了很多类似的问题,但似乎无法找到答案,如果这是一个重复的抱歉。因此,我正在为black jack创建一个java程序,我希望有一个适当的系统来保存用户拥有的芯片。我可以让它工作,但每当我试图让它保存它只是似乎覆盖了什么已经存在。 例子 用户输入名称:Bob 系统自动知道有筹码,所以当他们按下按钮保存游戏时,它会在上面写上名字和筹码,就像这样 鲍勃 200(或他们有多少芯片) 当一个新用户输入他们的名字并保存时,问题就出现了,比如说sally是在保存而不是去 鲍勃 二百 萨莉 三百
public void newSave(String user){
this.user = user;
user = user;
String Chip = Integer.toString(chips);
try{
FileWriter fileWriter = new FileWriter(file);
fileWriter.write(user);
fileWriter.write("\n");
fileWriter.write(Chip);
fileWriter.close();
}
catch(Exception e){
System.out.println(e.getMessage());
}
}
这是我的代码,这就是我的问题所在。
下面是程序方法的全部代码
import java.util.*;
import java.io.*;
class BlackJackPlayer{
//Keep the data secure by using private
private String hand;
private String user;
private int betNum;
private int sum;
private int numAces;
private int chips = 100;
private String bet;
private static Random gen = new Random();
private String result = "";
public String Win = "Win", Lose = "Lose", Split = "Split";
private final int ACE = 1;
private final int JACK = 11;
private final int QUEEN = 12;
private final int KING = 13;
//Scanner for fileIn
Scanner fileIn;
//File For Saves!
File file = new File("Saves.txt");
//Array For Saves!
private ArrayList<String> User = new ArrayList<>();
private ArrayList<Integer> Chips = new ArrayList<>();
//constructor
public BlackJackPlayer(){
hand = "";
sum = 0;
numAces = 0;
//Create a file if save file does not exist//
try{
if (file.createNewFile()){
System.out.println("Save File Created!");
}
else{
//Say Nothing//
}
}//End Try
catch(Exception e){
System.out.println(e.getMessage());
}
//End File Create//
//Read File //
try{
fileIn = new Scanner(new FileReader(file, true));
while(fileIn.hasNext()){
User.add( fileIn.nextLine().trim() );
Chips.add( fileIn.nextInt() );
}//End While
fileIn.close();
}//End Try
catch(Exception e){
System.out.println(e.getMessage());
}//End Catch
//End Read File//
}//End public
//checkSaveStatus//
//See if save exists already in text than send to proper scenario//
public boolean checkSaveStatus(String user){
for(String u: User){
if (user == u){
return true;
}//end if
}//end for
return false;
}//end checkSaveStatus
//End checkSaveStatus//
//overWriteSave if save already exists//
public void overWriteSave(String user){
}//end overWriteSave
//End overWriteSave//
//newSave scnenario if save dosent exist//
public void newSave(String user){
this.user = user;
user = user;
String Chip = Integer.toString(chips);
try{
FileWriter fileWriter = new FileWriter(file);
fileWriter.write(user);
fileWriter.write("\n");
fileWriter.write(Chip);
fileWriter.close();
}
catch(Exception e){
System.out.println(e.getMessage());
}
}
public boolean checkBet(String bet, int chips){
this.bet = bet;
int betNum = Integer.parseInt(bet);
if(betNum <= chips){
return true;
}
return false;
}
public String setBet(String bet){
this.bet = bet;
betNum = Integer.parseInt(bet);
return "You Bet: " + betNum;
}
public String updateChips(){
chips -= betNum;
return "You have: " + chips + " chips";
}
//Getter for hand variable
public String getHand(){
return hand;
}
public String setHand(){
hand = " ";
return hand;
}
//Getter for sum variable
public int getSum(){
return sum;
}
public void hit(){
//local variable
int currentCard = gen.nextInt(13) + 1;
if(currentCard > ACE && currentCard < JACK){
sum += currentCard;
hand += currentCard + " ";
}
else if(currentCard == ACE){
sum += 11;
numAces++;
hand += "A ";
}
else if(currentCard == QUEEN){
sum += 10;
hand += "Q ";
}
else if(currentCard == QUEEN){
sum += 10;
hand += "Q ";
}
else if(currentCard == KING){
sum += 10;
hand += "K ";
}//Ends Else If
//Is Ace 1 or 11
if(sum > 21 && numAces > 0){
numAces--;
sum -= 10;
}
}//ENDS HIT
public void stand(){
sum = sum;
return;
}//ends stand
public String getWin(BlackJackPlayer other) {
if(sum > 21){
result = Win;
}
else if(sum < other.getSum()){
result = Lose;
}
else if(sum == other.getSum()){
result = Split;
}
return result;
}
}//end class
import java.util.*;
导入java.io.*;
黑杰克级球员{
//通过使用私有密钥保护数据安全
私人弦手;
私有字符串用户;
私有int betNum;
私人整数和;
私人裸体;
私有整数芯片=100;
私人串注;
private static Random gen=new Random();
私有字符串结果=”;
公共字符串Win=“Win”、Lose=“Lose”、Split=“Split”;
私人最终积分=1;
私人最终int插孔=11;
私人最终整数=12;
私人最终int KING=13;
//文件导入扫描仪
扫描仪文件输入;
//保存文件!
File File=新文件(“Saves.txt”);
//保存阵列!
private ArrayList User=new ArrayList();
私有ArrayList芯片=新ArrayList();
//建造师
公共黑杰克玩家(){
hand=“”;
总和=0;
numAces=0;
//如果“保存文件”不存在,请创建文件//
试一试{
if(file.createNewFile()){
System.out.println(“保存创建的文件!”);
}
否则{
//什么也别说//
}
}//结束尝试
捕获(例外e){
System.out.println(e.getMessage());
}
//结束文件创建//
//读取文件//
试一试{
fileIn=newscanner(newfilereader(file,true));
while(fileIn.hasNext()){
User.add(fileIn.nextLine().trim());
Chips.add(fileIn.nextInt());
}//结束时
fileIn.close();
}//结束尝试
捕获(例外e){
System.out.println(e.getMessage());
}//端接
//结束读取文件//
}//终端公众
//检查保存状态//
//查看文本中是否已存在保存,然后发送到适当的场景//
公共布尔值checkSaveStatus(字符串用户){
for(字符串u:用户){
如果(用户==u){
返回true;
}//如果结束
}//结束
返回false;
}//结束检查保存状态
//结束检查保存状态//
//如果保存已存在,则覆盖保存//
公共void overWriteSave(字符串用户){
}//结束覆盖保存
//结束覆盖保存//
//如果存在保存文件,则使用newSave scnenario//
public void newSave(字符串用户){
this.user=用户;
用户=用户;
字符串Chip=Integer.toString(chips);
试一试{
FileWriter FileWriter=新的FileWriter(文件);
fileWriter.write(用户);
fileWriter.write(“\n”);
写(芯片);
fileWriter.close();
}
捕获(例外e){
System.out.println(e.getMessage());
}
}
公共布尔校验赌注(字符串赌注、整数筹码){
this.bet=bet;
int betNum=Integer.parseInt(bet);
if(betNum ACE&¤tCard<插孔){
总和+=当前卡;
手牌+=当前卡+“”;
}
否则如果(当前卡==ACE){
总和+=11;
numAces++;
手牌+=“A”;
}
else if(当前卡==女王){
总和+=10;
手+=“Q”;
}
else if(当前卡==女王){
总和+=10;
手+=“Q”;
}
否则如果(当前卡==国王){
总和+=10;
手+=“K”;
}//如果有,则结束
//A是1还是11
如果(总和>21&&numes>0){
裸体--;
总和-=10;
}
}//结束打击
公众看台(){
总和=总和;
返回;
}//端架
公共字符串getWin(BlackJackPlayer其他){
如果(总和>21){
结果=胜利;
}
else if(sum
使用以下代码
FileWriter FileWriter=newfilewriter(file,true);
此处true
表示要将数据附加到现有文件中
有关更多详细信息:fileIn=newscanner(newfilereader(file));所以我把它设置成这样。由于我在以前的代码中使用了fileIn.nextLine(),那么我如何输入它并使其继续工作呢?因此我尝试将true添加到我的fileIn=new Scanner(new FileReader(file));当我遇到一个错误,没有为FileReader找到合适的构造函数(File,boolean)时,我将用这个文件中涉及的所有代码更新我的帖子。我的错,我看错了你的评论。我的意思是替换新的FileWriter(文件)代码>与
新FileWriter(文件,真)代码>。请在使用新扫描仪(新文件阅读器(文件))的地方用完整的代码更新您的问题代码>。我已经添加了我的代码。我没有一个特定的行包含新的FileWriter(文件),它与我的fileIn=new Scanner(新的FileReader(文件));选中newSave(字符串用户)
方法。在try块的第一行中有新的FileWriter(文件)
。