我正在试验一个程序,该程序允许用户将文件(在这种情况下,是纸牌中的纸牌列表)保存到.csv
文件中,并且我想限制这些文件的数量。创建。例如,如果用户尝试创建一个牌组,并且已经保存了3个,则该程序不应允许用户添加这个新牌组。
我做的第一件事是创建一个saveDeck()
方法:
public void saveDeck() {
try {
if(checkDeckCount() == true) {
Scanner sc = new Scanner(System.in);
System.out.println("What would you like to name your deck?");
String userString = sc.nextLine();
FileOutputStream OutFile1 = new FileOutputStream(userString + ".csv");
PrintWriter pw1 = new PrintWriter(OutFile1);
for(Card c : deck) {
pw1.println(c.name());
}
pw1.close();
FileOutputStream OutFile2 = new FileOutputStream("decklist.csv");
PrintWriter pw2 = new PrintWriter(OutFile2);
pw2.println(userString);
pw2.close();
}
else {
System.out.println("No more deck slots");
}
}
catch(FileNotFoundException e) {
System.out.println("file not found");
}
}
saveDeck()
方法使用第一个PrintWriter自己编写保存文件,第二个PrintWriter将保存文件的名称放入单独的.csv
文件中,以提供已保存文件的总列表甲板。在checkDeckCount()
方法开头附近引用的saveDeck()
方法中发现了我似乎遇到的问题。
public boolean checkDeckCount() {
try {
FileInputStream InFile = new FileInputStream("decklist.csv");
Scanner sc = new Scanner(InFile);
fileCount = 0;
sc.useDelimiter(",|\n");
while(sc.hasNext()) {
if(fileCount >= 3) {
return false;
}
fileCount++;
}
}
catch(FileNotFoundException e) {
System.out.println("File not found");
}
return true;
}
该程序可以编译,并且第一次运行可以正常运行。它允许您构建一个牌组,保存牌组,并将牌组的名称保存到decklist.csv
文件中。但是,当第二次运行时,即使只有一个条目,它也会转到else
语句,并告诉我没有更多的纸槽。这仅仅是checkDeckCount()
方法的技术错误,还是更大的结构性问题?我很困惑,对于如何解决此问题的任何建议将不胜感激。