Я пытаюсь заставить это распознавать начальные нули в моей программе, и я подумал об использовании '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");
}
// ...
Спасибо, я не видел formatted.equals, когда исследовал это. Я ценю общие знания :).
Вы делаете что-то не так здесь.
011, 010, 001 — числа восьмеричный, так как они начинаются с нуля.
Также использование String.format здесь бессмысленно, так как полученное значение не используется.
Возможно, поэтому ваши ветки if не учитываются.
final String formattedValue = String.format("%03d", code);
Теперь вы можете использовать formattedValue в качестве значения сравнения для ваших if утверждений.
Пример
if ("111".equals(formattedValue)) { ... }
Обратите внимание, что, возможно, преобразование int в String не обязательно. Но если вы настаиваете на этом, рекомендуется использовать константу String в качестве операнда, вызывающего equals(...).
Ну, String.format("%03d", code) возвращает нить, и вы сравниваете с целые числа (восьмеричные целые числа, как указал 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;
}
Мне нужно, чтобы каждое число состояло из трех целых чисел, обязательны начальные нули.
@NorHabboub Но это только внутреннее представление кодов, и не имеет значения, как они представлены внутри, «011» и 11 одинаково уникальны. Если это требование, вы должны заставить пользователя ввести трехзначный код и прочитать его как строку (sc.next())
Почему бы не заставить пользователя ввести
String?