我为系统制作了一个代码,该代码会更新文本文件数据库中的记录,但我似乎无法使其正常工作。代码没有任何错误。它只是不做我打算做的事情
public static void Update() throws Exception {
File tempfile2 = new File("temp.txt");
tempfile2.createNewFile();
FileInputStream tempFStream = new FileInputStream(tempfile2);
BufferedReader read = new BufferedReader(new InputStreamReader(tempFStream));
System.out.print("Product Number: ");
String searchnum = br.readLine();
try {
LoadFile();
boolean found = false;
for (int i = 0; i < row; i++) {
String record[] = list.get(i).split(",");
if (!searchnum.equals(record[0])) {
found = true;
FileWriter fw = new FileWriter(tempfile2, true);
fw.write(record[0] + "," + record[1] + "," + record[2] + "," + record[3] + "," + record[4] + "," + record[5] + "rn");
fw.close();
}
}
for (int i = 0; i < row; i++) {
String record[] = list.get(i).split(",");
if (searchnum.equals(record[0])) {
found = true;
System.out.println("ttt*******************************");
System.out.println("ttt PIXBOX PHOTOBOOTH");
System.out.println("ttt*******************************");
System.out.println("ntttRecord Found:");
System.out.println("ntttProduct Number : " + record[0]);
System.out.println("tttCategory : " + record[1]);
System.out.println("tttProduct Name : " + record[2]);
System.out.println("tttPrice [m/d/y] : " + record[3]);
System.out.println("tttQuantity : " + record[4]);
System.out.println("nnttt--------------------------------");
System.out.print("tttAre you sure you want to replace the records?<Y/N>: ");
String del = br.readLine();
if (del.equals("Y") || del.equals("y")) {
LoadFile();
System.out.println("ttt*******************************");
System.out.println("ttt PIXBOX PHOTOBOOTH");
System.out.println("ttt*******************************");
System.out.println("nnttt------Update Record Form------");
System.out.print("nntttProduct Number : ");
int prodnum = Integer.parseInt(br.readLine());
System.out.print("tttCategory : ");
String cat = br.readLine();
System.out.print("tttProduct Name :");
String prodname = br.readLine();
System.out.print("tttPrice: ");
String price = br.readLine();
System.out.print("tttQuantity : ");
String quan = br.readLine();
read.close();
database.delete();
boolean rename = false;
if (rename = tempfile2.renameTo(database)) {
InsertRecords(prodnum, cat, prodname, price, quan);
System.out.println("tttSuccessfully Edited!");
exiting();
} else {
System.out.print("Edit Failed!");
}
} else if (del.equals("N") || del.equals("n")) {
MainMenu();
}
}
if (!searchnum.equals(record[1])) {
System.out.println("ntttNo Record Found.");
Thread.sleep(2000);
exiting();
}
}
} catch (Exception e) {
System.out.print("File Empty!");
}
}
public static void LoadFile()throws Exception
{
list.clear();
FileInputStream fis = new FileInputStream(database);
BufferedReader read = new BufferedReader(new InputStreamReader(fis));
row = 0;
while(read.ready())
{
list.add(read.readLine());
row++;
}
read.close();
}
每次我运行此功能...它都可以正常工作,直到产品编号:用户输入,在输入一个数字后,它将直接显示文件为空,该文件已在程序的末尾。它好像忽略了尝试/捕获。我肯定做错了什么,但我不知道我做错了什么。有人给我亮了一些光吗?谢谢
和e.printstacktrace();这是输入产品编号后显示的内容...
java.lang.ArrayIndexOutofBoundException:5
at SnackTimeInventorySystem.Update<SnackTimeInventorySystem.java:525>
at SnackTimeInventorySystem.MainMenu<SnackTimeInventorySystem.java:66>
at SnackTimeInventorySystem.Login<SnackTimeInventorySystem.java:369>
at SnackTimeInventorySystem.main<SnackTimeInventorySystem.java:14>
事实证明,我的数组上只有5个条目,但声明了6个条目
System.out.println("ttt*******************************");
System.out.println("ttt PIXBOX PHOTOBOOTH");
System.out.println("ttt*******************************");
System.out.println("ntttRecord Found:");
System.out.println("ntttProduct Number : " + record[0]);
System.out.println("tttCategory : " + record[1]);
System.out.println("tttProduct Name : " + record[2]);
System.out.println("tttPrice [m/d/y] : " + record[3]);
System.out.println("tttQuantity : " + record[4]);
System.out.println("nnttt--------------------------------");
fw.write(record[0] + "," + record[1] + "," + record[2] + "," + record[3] + "," + record[4] + "," + record[5] + "rn");
所以我只需要删除 record[5]
并解决了问题