我是编码新手,正在尝试学习 JAVA,并使用不同的方法来完成简单的任务。我想制作一个简单的通讯录,具有“添加联系人、按号码搜索、按姓名搜索等”功能。我的大多数方法都有效,但以下两种方法有问题。
当我调用时modify Contact
,即使我尝试替换名称,代码也会在文件中创建一个新行。然后我调用delete By Name
删除未修改的行,并且收到以下错误。(我知道错误的原因,但我找不到有效的解决方案......)
public static void modifyContact(String namee){
Scanner sca =new Scanner(System.in);
String newName = sca.nextLine();
try {
String[] s;
boolean foundPerson = false;
Scanner sc = new Scanner(new File("addressBook.txt"));
while (sc.hasNextLine()) {
s = sc.nextLine().split(",");
if (s[0].equals(namee)) {
s[0]=s[0].replace(s[0],newName);
System.out.println("Name is " + namee + " phone number is " + s[1] + " ,address is " + s[3] + " and email is " + s[2]);
foundPerson = true;
deleteByName(namee);
File file =new File("addressBook.txt");
FileWriter pw = new FileWriter(file,true);
pw.write(s[0]+","+s[1]+","+s[2]+","+s[3]);
pw.close();
}
}
sc.close();
deleteByName(namee);
if (!foundPerson) {
System.out.println("No contact found with " + namee);
}
}
catch (IOException ex) {
//System.out.println(ex.getMessage());
}
}
public static void deleteByName(String na){
try{
File inputFile = new File("addressBook.txt"); // Your file
File tempFile = new File("TempFile.txt");// temp file
BufferedReader reader = new BufferedReader(new FileReader(inputFile));
BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile));
String currentLine;
while((currentLine = reader.readLine()) != null) {
if(currentLine.contains(na))
continue;
writer.write(currentLine);
writer.newLine();
}
三国纷争
天涯尽头无女友
12345678_0001
海绵宝宝撒
森栏
相关分类