0

ユーザー入力に関してコードをより厳密にする方法があるかどうか疑問に思っていますか?

例外/Try-Catch ブロックを試していますが、ユーザー入力を受け入れて、それが正しい日付タイプであることを検証する必要があります。

ユーザー入力を厳密な double にする方法はありますか? つまり、ユーザーが小数点なしで値を入力できるようにしたくありません。たとえば、5 のような int であり、検証されて double に変換され、5.0 が返されます。厳密に double 値を入力するように求められます。 、小数点が入力された値の一部であることを確認してください。

ラッパーまたはこのようなものを使用するのが適切でしょうか?もしそうなら、どうすればこれを行うことができますか?

現在のコード:

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() + " ***");
    }

}
4

1 に答える 1

0

数値を文字列として読み取り、「.」が含まれていることを確認できます。キャラクター。これは、Double.parseDouble(String) で解析できます。もちろん、あなたはまだ入ることができ1.0ます1.1

于 2013-11-04T23:10:24.440 に答える