java - 使用 Java 扫描器时条件未按预期工作

标签 java

我基本上想知道为什么如果用户输入诸如-0.5之类的数字,我的条件语句允许变量指数变为0.0。这是我的代码...

    Scanner num2 = new Scanner(System.in);
    System.out.println("Enter an integer value for n: ");

    int temp = 0;

    if(num2.hasNextInt()) {
        temp = num2.nextInt();
        if(temp >= 1.0 ){
            exponent = temp;
        }
        else {
            System.out.println("You have not entered a positive integer value for n.");
            exponent();
        }
    }
    return exponent;

当我将 temp 分配给 nextInt 时,奇怪的部分发生了。通过这样做,我希望使以下条件语句按预期工作(temp 必须大于或等于 1 才能设置指数)。然而,当我调用这个函数并输入 -0.5 时,函数完成并使得指数 = 0。在这种情况下,我的目标是拥有一个大于或等于 1 的指数。提前致谢!

最佳答案

如果您的输入是-0.5,则条件num2.hasNextInt()将为假,下一条执行的指令将返回指数;,这里似乎返回 0(我不知道为什么,因为您提供的代码不完整)。

要正确检查输入是否正确,请尝试以下操作:

if(num2.hasNextInt() && (temp = num2.nextInt()) >= 1) {
    exponent = temp;
}
else {
    System.out.println("You have not entered a positive integer value for n.");
    exponent();
}

编辑:我不知道你的exponent()方法做了什么,但如果是相同的方法,我还建议使用简单的for循环而不是递归调用,如其他答案中所述。

关于java - 使用 Java 扫描器时条件未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25836892/

相关文章:

java - 更改 SWING 中的布局

java - 在 Java 中使用循环创建变量名?

java - 如果将多个 Intent 传递给服务,如何从 Intent 获取 bundle

java - 可以使用流 api 重写以下循环,还是我徒劳无功?

java - 我应该如何查询仅具有特定用户 ID 的 recyclerview 中的帖子?

java - 字符串文字和永久代内存区域

java - Eclipse 不增加 .ini 中指定的 VM 堆大小

java - 具有主键保留序列更新的数据库多线程

java - Switch 语句中的枚举无法解析

java - 归并排序的基本条件