Je tente d'obtenir ceci pour reconnaître les principaux zéros de mon programme et je pensais utiliser "String.Format ("% 03d ", code); ' s'en occuperait, mais je ne reçois toujours pas le résultat attendu.
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"); } } }
4 Réponses :
Vous éliminez la valeur formatée. Vous devez la stocker dans une variable et la comparer comme chaîne:
String formatted = String.format("%03d", code); if( formatted.equals("111") ){ System.out.println("All ways"); } // ...
Je vous remercie, je n'ai pas vu de formaté. J'apprécie les connaissances partagées :).
Vous faites quelque chose de mal ici.
maintenant, vous pouvez utiliser Notez que transformer peut-être le 011 code>,
010 code>,
001 code> sont octal strong> numéros , comme ils commencent avec un zéro.
En outre, en utilisant string.format code> est inutile ici, car la valeur résultante n'est pas utilisée.
Cela pourrait être la raison pour laquelle votre si code> ne sont pas pris en compte. P>
formatévalue code> en tant que Valeur de comparaison pour votre
si code> déclarations.
Exemple p> int code> dans une chaîne
code> n'est pas nécessaire. Mais au cas où vous insistez pour le faire, une bonne pratique consiste à utiliser une chaîne code> constante code> comme opérande qui appelle
égale (...) code>. P> p>
Eh bien, Vous devez stocker la chaîne formatée à une variable, par exemple p> puis comparez-le sur les chaînes dans vos instructions if / else, comme: p> string.format ("% 03d", code) code>, renvoie une chaîne
Ne pas formater et retirer les catastrophes de la section 0 dans la condition et utilisez le commutateur
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; }
J'ai besoin de chaque numéro pour être trois entiers longs, les zéros principaux sont une exigence.
@Norhabboub mais cette seule représentation interne des codes et ne peut faire aucune différence comment ils sont représentés en interne, "011" et 11 sont également uniques. Si ce serait une exigence, vous devez obliger l'utilisateur à saisir un code à 3 chiffres et à lire comme une chaîne ( sc.next () code>)
Pourquoi ne pas obtenir l'utilisateur de saisir une chaîne code> code>?