我有一个允许用户将信息写入文件的程序。它不会重写原始文件中的所有内容,而是对其进行添加。问题是如果用户没有输入足够的信息,程序就会崩溃。
文本文件中的每一行看起来像这样:
信息1,信息2,信息3,信息4,信息5,信息6,信息7
每行有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");
}
}
不要抛出异常。验证用户输入,并仅在有效时将其写入文件。
我该如何验证呢?这就是我被困住的地方。
例如,通过使用String.split(",")
,它会给你一个String[]
,你可以检查String[].length == 7
是否。
编辑:只是为了确保这不是一个完整的解决方案,你的问题,但一个好的起点。我强烈同意所有其他的评论/答案,抛出一个异常是多余的。
edit 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
。