在学习Java编程的时候,练习了求对数并验证输入,然后出现了一个问题,希望友友们解答一下
先附上代码:
import java.util.Scanner;
public class Work4 {
/**
* 求对数并验证输入
*/
public static void printLogarithm(double num) {
if (num < 0) {
System.out.println(num + " 小于 0,没有对数");
return;
} else if (num ==0) {
System.out.println("0 没有对数");
return;
}
double Logarithm = Math.log(num);
System.out.println(num + " 的对数是:" + Logarithm);
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("请输入一个数字:");
// double num = in.nextDouble(); // 【1】
// 验证输入,hasNextDouble 用于检查能否将输入流中的下一个标记转换为 double 值
if (!in.hasNextDouble()) {
String word = in.next();
System.err.println(word + " 不是一个数字");
return; // 结束 if 条件语句
}
double num = in.nextDouble(); // 【2】
printLogarithm(num);
}
}
如上,如果我的
double num = in.nextDouble();
这条语句在【1】这个位置的话,就需要输入两次,而在【2】位置只需要一次,这是为什么呢
下图是在【1】的位置的输出:
下图是在【2】的位置的输出: