限制可以通过Java中的“保存”方法创建的.csv文件的数量

时间:2019-03-17 23:59:29

标签: java csv

我正在试验一个程序,该程序允许用户将文件(在这种情况下,是纸牌中的纸牌列表)保存到.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()方法的技术错误,还是更大的结构性问题?我很困惑,对于如何解决此问题的任何建议将不胜感激。

0 个答案:

没有答案