0
继续苦苦挣扎,继续工作时间或研究..我有一个简单的帮助类,这是我第一次尝试/ catch错误处理。我想知道,如果输入对所需类型有效,并且要求输入新输入(如果它不是......简单或我想的)。该课程正用于简单的定期存款计算器中,称为多次(即初始存款,利率等)。Java - 缓冲阅读器帮助类无法获得第二个输入
这是违规类,如果这不足以解决我会发布一些额外的片段。
private Float inFloat;
private String temp;
private int inInt;
private String inString;
BufferedReader in = null;
boolean validInput = false;
public Float getFloat(String prompt) {
validInput = false;
do {
try {
in = new BufferedReader(new InputStreamReader(System.in));
System.out.print(prompt);
temp = in.readLine();
inFloat = Float.valueOf(temp);
validInput = true;
} catch (IOException e) {
System.out.println("Please enter a valid float value");
} finally {
try {
if (in != null) {
in.close();
}
} catch(IOException e) {
e.printStackTrace();
}
}
} while (validInput == false);
return inFloat;
}
更新 - 修正了!!!
感谢您的快速反馈......我设法找到另一篇文章提到我不应该关闭BufferedReader,并提出以下调整,现在可以工作。我现在抓住一个NumberFormatException以及..谢谢你的提示:)
不知道为什么它的工作,现在我没有关闭BufferedReader ...但我会采取结果!
private Float inFloat;
private String temp;
private int inInt;
private String inString;
BufferedReader in = null;
boolean validInput = false;
public Float getFloat(String prompt) {
validInput = false;
do {
try {
in = new BufferedReader(new InputStreamReader(System.in));
System.out.print(prompt);
temp = in.readLine();
inFloat = Float.valueOf(temp);
validInput = true;
} catch (NumberFormatException e) {
System.out.println("Please enter a valid float value");
} catch (IOException e) {
e.printStackTrace();
}
} while (validInput == false);
return inFloat;
}
你有什么具体问题吗?请注意,Float.valueOf可以抛出IOException以外的异常,如果它发生异常,则不会捕获它们。 – MeBigFatGuy 2011-04-26 13:09:42
你可以显示一个链接,建议不要关闭阅读器吗?它没有多大意义,除非'close'会影响'System.in'。 – 2011-04-26 13:27:48
@Andreas_D我可能不正确,从以下链接解释了该行为的过程:http://stackoverflow.com/questions/5202060/issue-reading-input-from-java-system-in – Stu 2011-04-26 14:05:56