java - 为什么 (d <= 9999 || d > 999) 始终为真?

标签 java

import java.util.Scanner;

public class asg3 {

    public static int setoriginal() {
        int d=0; 
        int l=0;                                                           
        do {   
            Scanner input = new Scanner(System.in);
            System.out.println("Please enter a 4 digit number: ");
            d=input.nextInt();
            if (d<=9999 || d>999) {
                break;
            } else {
                System.err.printf ("You did not enter 4 digits\n");
            }           
            l=l+1;
        } while (l<3);    
        return d;
    }

    public static void main(String[] args) {
        setoriginal();
    }
}

当我输入 12345 时,它可以工作,但似乎对四位数以外的任何其他数字都不起作用。 知道什么可能是错的或者我做错了什么吗?

最佳答案

看看这个条件:

if (d <= 9999 || d > 999)

要使其评估为 false,您必须找到一个大于 9999小于 1000 的值。我认为您很难找到这样的数字......

我怀疑你的意思是:

if (d <= 9999 && d > 999)

我个人会将其写为:

if (d >= 1000 && d <= 9999)

if (1000 <= d && d <= 9999)

在所有这些版本中,您基本上是在检查它是否大于或等于 1000并且它是否小于或等于 9999。

关于java - 为什么 (d <= 9999 || d > 999) 始终为真?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7999340/

相关文章:

java - 跳过带有不公平硬币的列表

java - 为什么我的 "index.jsp"无法使用 java 和 Spring 识别 Controller 中的变量

java - if(x!=y) 与 if(x==y)

java - Apache Cassandra启动问题: Could not find the main class: Files\Apache

java - 如何让try-finally中的finally等待线程完成?

java - 模式/匹配器 Java,非零组计数但错误检索?

java - double

java - 通过添加字节数组的 16 位无符号作为校验和来获取两个字节

java - 如何将变量参数传递给instanceof?

java - 无弹窗的安卓语音识别App