java - 如何让我的 FileWriter 找到下一个可用行而不是写在下面
问题描述
因此,我已经看到了很多与此类似的问题,但如果这是重复的,似乎找不到答案,很抱歉。所以我正在为黑杰克创建一个 java 程序,我希望有一个系统来保存用户拥有的筹码。我可以让它工作,但每当我试图让它保存时,它似乎会覆盖之前已经存在的内容。示例用户在那里输入名称:Bob 系统自动知道那里的筹码,所以当他们按下按钮保存游戏时,它会在那里写下名称和筹码,就像这样......
鲍勃
200(或者他们有多少筹码)
当新用户输入名称并保存时出现问题,所以说莎莉正在保存而不是去
鲍勃
200
莎莉
300
它确实
莎莉
300并彻底删除bob
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
解决方案
使用以下代码。
FileWriter fileWriter = new FileWriter(file, true);
此处true
表示您要将数据附加到现有文件。
推荐阅读
- apache-spark - Apache Airflow 在* Spark 作业中编排 DAG?
- c - fpclassify(x) == FP_NAN 在功能上是否等同于 isnan(x)?
- javascript - SVG 图表使用 Canvg 转换错误
- openshift - Openshift 集群 - Github webhook 不工作
- paraview - 从 pv 服务器加载 Paraview 状态文件
- mysql - 在 mysql 上使用 current_date 检查约束
- c# - C#, ASP.NET MVC, Entity Framework : relationship multiplicity constraint violation
- java - Problem using data objects passed into JBPM 7.44/RH PAM 7.9 from
- android - Firestore 侦听器在 Android 上使 Unity 应用程序崩溃,但在 Unity 编辑器中工作正常。我该如何解决这个问题?
- c# - ASP.NET Core Razor Pages - 返回 Page() 后复杂模型属性为空