Instruction Java If Else pour les abréviations


J'ai travaillé sur ce code, c'est vraiment basique mais je viens de commencer à travailler avec Java et je ne sais pas ce qui se passe avec lui.

import java.util.Scanner;


public class Proj {


public static void main(String[] args) {

    //Create Scanner
    Scanner scanner = new Scanner(System.in);

    //Input Abbreviation
    System.err.print("Input METAR Abbreviation: "); 
    scanner.nextLine( );

    //Abbreviations
    String abb = "";
    if (abb.equals("B"))  {
        System.out.println ("Began At Time ");
    }
    else if(abb.equals("+")) {
        System.out.println ("Heavy intensity");
    }
    else if(abb.equals("-")) {
        System.out.println ("Light intensity");
    }
    else if(abb.equals("DZ")) {
        System.out.println ("Drizzle");
    }
    else if(abb.equals("E")) {
        System.out.println ("Ended At Time");
    }
    else if(abb.equals("HZ")) {
        System.out.println ("Haze");
    }
    else if(abb.equals("RA")) {
        System.out.println ("Rain");
    }
    else if(abb.equals("SN")) {
        System.out.println ("Snow");
    }
    else(abb !=NULL) {
        System.out.println("Unknown Abbreviation");
    }
    //Close scanner
    scanner.close( );
    }
}

Donc, ce que j'essaie de faire, c'est quand quelqu'un entre l'une des abréviations, il imprime ce que cela signifie, et si l'abréviation n'existe pas, elle imprime une abréviation inconnue. Donc, mon problème est que lorsque j'exécute le code, il imprime l'abréviation METAR d'entrée et vous pouvez entrer une chaîne mais après cela rien ne se passe, quelqu'un peut-il m'aider. Merci

Author: user2948511, 2015-01-10

4 answers

Vous appelez scanner.nextLine() mais ne capturez jamais ou n'utilisez jamais son résultat. Ensuite, vous attribuez String abb= "". Cela signifie que abb sera toujours "". Cela ne correspond à aucune de vos conditions if.

Si vous faites String abb = scanner.nextLine( );, vous obtiendrez ce que vous voulez: le scanner lira la ligne suivante et affectera cette valeur à abb.

Incidemment, je doute que ce code compile; NULL n'est pas un mot clé en Java (Java est sensible à la casse), et le else a besoin d'un if après. Mais vous n'avez pas non plus besoin de vérifier null, parce que scanner.nextLine() ne le renvoie jamais (s'il n'y a pas de ligne suivante, il lance juste NoSuchElementException). Si le dernier bit devrait juste être un simple else {.

 2
Author: yshavit, 2015-01-09 21:23:00

Il y a quelques problèmes:

  • Vous devez affecter le résultat scanner.nextLine() à une variable. Dans ce cas, je pense que vous devez l'assigner à abb:

    Chaîne abb = scanner.nextLine();

  • De plus, vous avez oublié le {[3] } dans la dernière condition:

    else if (abb != null) {
        System.out.println("Unknown Abbreviation");
    }
    
  • Et n'oubliez pas que Java est sensible à la casse, donc il doit être null, pas NULL.

 2
Author: Christian, 2015-01-09 21:12:09

Puis-je vous suggérer d'utiliser une instruction switch, switch est beaucoup plus facile dans votre cas au lieu d'imbriqué si, vous pouvez utiliser

switch(condition){
case something:
//do stuff
}

Par exemple

    switch(abb){
case "hello":
System.out.println("hi there")
break;
case "else string":
//do something 
break;
}

Bonne chance! Heureux d'aider

 2
Author: fill͡pant͡, 2015-01-09 21:29:52

Vous lisez la ligne du Scanner mais ne la stockez nulle part, modifiez-la comme suit:

String abb = scanner.nextLine( );
 1
Author: Kakarot, 2015-01-09 21:08:58