首页 > 解决方案 > 为什么我的程序与所需的 if/else 语句不匹配?

问题描述

我不明白为什么我的程序匹配错误的 if 语句,例如当我使用 133 作为输入时,代码将执行It's a two digit number.而我希望它执行It's a three digit number.

这是我的代码:

import java.util.Scanner;

public class Main
{
    public static void main(String[] args) {
        
        Scanner input = new Scanner(System.in);
        
        System.out.print("Input Digits: ");
        int id = input.nextInt();

        if(id >10){
           System.out.print("It's a two digit number");
        }
        
        else if(id >100){
           System.out.print("It's a three digit number");
        }
        
        else if(id >1000){
           System.out.print("It's a four digit number");
        }
        
        else if(id >10000){
           System.out.print("It's a five digit number");
        }
        
        else 
           System.out.print("Number  is not between one- and six-digit number");
    
    }
}

输出:

Input Digits: 133

It's a two digit number.

标签: java

解决方案


它将执行它匹配的第一个 if 语句,在这种情况下:id>10。

将您的代码更新为:

import java.util.Scanner; 

public class Main { 

public static void main(String[] args) {

    Scanner input = new Scanner(System.in);
    
    System.out.print("Input Digits: ");
    int id = input.nextInt();
  
    if(id >=10000 && id <100000){
       System.out.print("It's a five digit number");
    } else if(id >=1000 && id <100000){
       System.out.print("It's a four digit number");
    } else if(id >=100 && id <100000){
       System.out.print("It's a three digit number");
    } else if(id >=10 && id <100000){
       System.out.print("It's a two digit number");
    } else {
       System.out.print("Number  is not between one- and six-digit number");
    }
}
}

推荐阅读