我正在尝试验证java中的双输入,但每次更改方法或变量类型时我都会收到错误消息。代码如下:
do{
gpa = getDouble(" GPA:");
gpaError = dblChecker(gpa);
if(!gpaError){
JOptionPane.showMessageDialog(null,"Incorrect Input. Please Try Again!");//displays incorrect input message on JOptionPane
}
} while(!gpaError);// checks for proper input
public static String getInput(String data){
String input = "";
input = javax.swing.JOptionPane.showInputDialog(null,"Enter your " + data);
return input;
}// end getInput information
private static String getString(String message) {
String input = JOptionPane.showInputDialog(null, message, "Input",
JOptionPane.QUESTION_MESSAGE);
return input;
}
private static double getDouble(String message) {
String input = getInput(message);
return Double.parseDouble(input);
}
public static boolean dblChecker(String instr){
boolean outBool = true;
double tmpDbl = 0.0;
try{
tmpDbl = Double.parseDouble(instr);
if(tmpDbl <= 0)
throw new IllegalArgumentException();
}
catch (Exception e){
outBool = false;
}
return outBool;
} //end validation for GPA
答案 0 :(得分:1)
我使用Double.valueOf并且它可以正常工作
答案 1 :(得分:0)
20年前编写的本地.parse()
方法差不多,它们是一个糟糕的API。
将指定的字符串解析为双精度浮点 值。 ASCII字符&#39; - &#39; (&#39; \ u002D&#39;)被识别为减号 标志。与Double.parseDouble(String)不同,此方法返回null 如果解析失败,而不是抛出异常。有效输入是 正是Double.valueOf(String)接受的那些,除了前导 并且不允许使用尾随空格。
这个实现可能比Double.parseDouble更快 预计会有很多失败。