0

我有一个允许用户将信息写入文件的程序。它不会覆盖原始文件中的所有内容,而是添加它。问题是如果用户没有输入足够的信息,程序就会崩溃。

文本文件中的每一行如下所示:

信息 1, 信息 2, 信息 3, 信息 4, 信息 5, 信息 6, 信息 7

每行有六个逗号和七条信息。所以,如果说用户只输入 4 条信息或只使用两个逗号等,我需要知道使用什么样的异常来防止崩溃。有人知道该怎么做吗?

这是我的代码:

private void addDVDButtonActionPerformed(java.awt.event.ActionEvent evt) {                                             
    FileWriter fWriter = null;
    BufferedWriter writer = null;
    try {
        fWriter = new FileWriter("info.txt", true);
        writer = new BufferedWriter(fWriter);

        writer.write(JOptionPane.showInputDialog(this, "ADDING INFO"));
        writer.newLine();
        writer.close();
    } catch (Exception e) {
        JOptionPane.showMessageDialog(this,"More information required");
    }
}                        
4

2 回答 2

1

不要抛出异常。验证用户输入并仅在有效时将其写入文件。

于 2011-04-11T12:22:14.557 回答
0

我将如何验证它?这就是我所坚持的。

例如,使用String.split(",")which 会给你一个String[],你可以检查 if String[].length == 7

编辑:只是为了确保这不是您问题的完整解决方案,而是一个好的起点。我强烈同意所有其他评论/答案,抛出异常是矫枉过正的。

编辑 2:假设用户提供了以下字符串作为输入,并且您希望在写入文件之前对其进行验证:

String str = "a1,b2,c3,d4,e5,f6";

正如你所看到的,这个字符串有六个元素和五个逗号,换句话说,它应该给用户一个警告。一个非常简单的检查方法是:

if (str.split(",").length != 7) // checks if the string is comma delimited and has seven pieces of information
    warnUser();   // whatever you want to do to warn user
else 
    writeToFile(str);

请注意,这只是显示原理,在您的情况下,您可能(并且可能会)想要检查其他内容,例如格式,或者您有字母数字文本并且没有下划线或其他内容。如果您有很多要检查的条件,您可以编写一个方法,该方法validateInput(str)可以是一系列条件检查,并且true只有在所有条件都检查完毕后才返回。

于 2011-04-11T12:26:52.500 回答