我对编程很陌生,我开始做的是编写一个代码来转换公制中的不同单位。例如,程序要求用户输入 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/