java - 扫描器 java : - how to "read" what type of data user entered?

标签 java

我对编程很陌生,我开始做的是编写一个代码来转换公制中的不同单位。例如,程序要求用户输入 x 的公里数,然后将该值转换为英里等。当然公里和英里只能是正值。但是,我似乎没有回避告诉程序:“如果输入的值是字母值,则要求用户重新输入该值。”我似乎让它适用于负值,但不适用于字母字符,请帮忙。

这是我的代码:

    //Method for converting kilometer to mile. Will be invoked in main method
    public static void KmToMiles(double k, double mi) {
    Scanner scan = new Scanner(System.in);
    System.out.println("convert kilometer to mile:");
    k = scan.nextDouble();
    mi = k / 1.609344;
    if(mi < 0) {
        do {
            System.out.println("Entered value can not be negative. Enter a positive value:");
            k = scan.nextDouble();
            mi = k / 1.609344;
        } while (mi < 0);
    }
        BigDecimal bd = new BigDecimal(mi);
        bd = bd.setScale(1, RoundingMode.CEILING);
        System.out.println((int) k + " kilometer(s) =: " + bd + " miles");
        System.out.println("*****************************************\n");
        scan.close();
}

最佳答案

改编自SO solution here :

while (!scan.hasNextDouble())
    {
        System.out.println("Input must be double, please reinput:");
        scan.next();
    }

David Eck's book provides helpful examples of validation and also provides adaptations of scanner .

关于java - 扫描器 java : - how to "read" what type of data user entered?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46330790/

相关文章:

java - Apache VFS 相对路径

java - jodatime 和 Prettytime 哪个更好

java - 使用GenericsDAO + SpringMVC + Hibernate报错

java - 使用 JDBC 应用程序在 MySQL 中创建数据库和表

java - 如何从 jboss 模块内使用 slf4j 进行日志记录?

java - 如何使用 Spring Cloud Stream 在 RabbitMQ 的队列中添加功能 "x-delayed-type: direct"?

java - 为什么我会收到此错误?这是Java中kickstart 2020(分配)的第一个问题

java - 正则表达式排除引号内的匹配项

java - 如何知道某个应用程序是否已从 Google Play 或 Amazon 下载?

用于跨平台应用程序的 JavaFX 2.0 和 Qt