Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何让我的FileWriter找到下一行,而不是写在下面_Java_File_Filewriter - Fatal编程技术网

Java 如何让我的FileWriter找到下一行,而不是写在下面

Java 如何让我的FileWriter找到下一行,而不是写在下面,java,file,filewriter,Java,File,Filewriter,因此,我已经看到了很多类似的问题,但似乎无法找到答案,如果这是一个重复的抱歉。因此,我正在为black jack创建一个java程序,我希望有一个适当的系统来保存用户拥有的芯片。我可以让它工作,但每当我试图让它保存它只是似乎覆盖了什么已经存在。 例子 用户输入名称:Bob 系统自动知道有筹码,所以当他们按下按钮保存游戏时,它会在上面写上名字和筹码,就像这样 鲍勃 200(或他们有多少芯片) 当一个新用户输入他们的名字并保存时,问题就出现了,比如说sally是在保存而不是去 鲍勃 二百 萨莉 三百

因此,我已经看到了很多类似的问题,但似乎无法找到答案,如果这是一个重复的抱歉。因此,我正在为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(文件)