我遇到前导零问题

I'm having issues with leading zeros

我试图让它识别我程序中的前导零,我认为使用 'String.format("%03d", code);' 会处理它,但我仍然没有得到预期的结果。

import java.util.Scanner;  
import java.io.*;
public class Main{
    public static void main(String args[]){
        Scanner sc =new Scanner(System.in);
        System.out.println("Enter the shipment code :");
        int code = sc.nextInt();
        String.format("%03d", code);
        // fill the code
        if( code ==  111 ){
            System.out.println("All ways");
        }

        else if( code ==  110){
        System.out.println("Airway and Waterway");
        }

        else if( code ==  011){
        System.out.println("Waterway and Roadway");
        }
        else if( code ==  010){
        System.out.println("Waterway");
        }
        else if( code == 101){
        System.out.println("Airway and Roadway");
        }
        else if(code ==  001){
        System.out.println("Roadway");
        }
    }
}

您正在丢弃格式化值。您需要将其存储在一个变量中并将其与字符串进行比较:

String formatted = String.format("%03d", code);
if( formatted.equals("111") ){
    System.out.println("All ways");
}
// ...

你做错了。

011010001 八进制 数字,因为它们以零开头。
此外,使用 String.format 在这里毫无意义,因为结果值未被使用。
这可能就是为什么您的 if 分支未被考虑在内的原因。

final String formattedValue = String.format("%03d", code);

现在您可以使用 formattedValue 作为 if 语句的比较值。
范例

if ("111".equals(formattedValue)) { ... }

请注意,可能没有必要将 int 转换为 String。但如果您坚持这样做,一个好的做法是使用常量 String 作为调用 equals(...).

的操作数

嗯,String.format("%03d", code),returns 一个 字符串 ,你正在与 整数 (八进制整数,正如 LppEdd 指出的那样)。

您应该将格式化后的字符串存储到一个变量中,例如

String formatted = String.format("%03d", code);

然后将其与 if/else 语句中的字符串进行比较,如下所示:

if(formatted.equals("011")) {...}

不要格式化和删除条件中的任何前导 0 并使用开关

int code = sc.nextInt();
    // fill the code
switch(code) {
case 111:
    System.out.println("All ways");
    break;
case 110:
    System.out.println("Airway and Waterway");
    break;
case 11:
    System.out.println("Waterway and Roadway");
    break;
case 10:
    System.out.println("Waterway");
    break;
case 101:
    System.out.println("Airway and Roadway");
    break;
case 1:
    System.out.println("Roadway");
    break;
default:
    System.out.println("Unknown code " + code); 
    break;
}