我想知道是否有一种方法可以让我的代码在用户输入方面更加严格?
我正在尝试Exceptions / Try-Catch Blocks,并且必须接受一些用户输入并验证它是否是正确的日期类型。
有没有办法让用户输入严格的双倍?即我不希望用户能够输入没有小数点的值,例如像5&让它被验证并转换为double,返回5.0 - 我希望提示用户严格输入一个double值,确保小数点是输入值的一部分。
使用Wrappers或类似的东西是否合适,如果是这样 - 我怎么能这样做?
当前代码:
import java.util.Scanner;
public class InputExceptions {
//Do we have to do any Wrapping / instanceOf Double ?
//Can we accept an integer (no decimal point) for double entry ?
private static int inputInt;
private static double inputDouble;
public static int inputInt() {
Scanner kybd = new Scanner(System.in);
boolean inputOK = false;
while (inputOK == false) {
System.out.println("*** Please Enter an Integer Value: ");
try {
inputInt = kybd.nextInt();
kybd.nextLine();
inputOK = true;
} catch (Exception e) {
System.out.println("*** ERROR: VALUE ENTERED NOT INTEGER ***");
kybd.next();
}
}
return inputInt;
}
public static double inputDouble() {
Scanner kybd = new Scanner(System.in);
boolean inputOK = false;
while (inputOK == false) {
System.out.println("*** Please Enter a Double Value: ");
try {
inputDouble = kybd.nextDouble();
kybd.nextLine();
inputOK = true;
} catch (Exception e) {
System.out.println("*** ERROR: VALUE ENTERED NOT DOUBLE ***");
kybd.next();
}
}
return inputDouble;
}
public static void main(String[] args) {
System.out.println("*** INTEGER Input: " + inputInt() + " ***");
System.out.println("*** DOUBLE Input: " + inputDouble() + " ***");
}
}
答案 0 :(得分:0)
您可以将数字作为字符串读取,并检查它是否包含'。'字符。这可以使用Double.parseDouble(String)进行解析。当然,您仍然可以输入1.0
,与输入1.
或1