Java If Else 缩写语句

Java If Else statement for abbreviations

我一直在研究这段代码,它非常基础,但我才刚刚开始使用 Java,但我不知道它发生了什么。

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( );
    }
}

所以我想做的是,当有人输入其中一个缩写时,它会打印出它的意思,如果缩写不存在,它会打印出未知缩写。 所以我的问题是,当我 运行 它打印 Input METAR Abbreviation 的代码时,你可以输入一个字符串,但在那之后没有任何反应,有人可以帮我吗?谢谢

您正在从 Scanner 读取行但未将其存储在任何地方,请按如下方式更改它:

String abb = scanner.nextLine( );

您调用 scanner.nextLine() 但从未实际捕获或使用其结果。然后,您分配 String abb= ""。这意味着 abb 将永远是 ""。这不符合您的任何 if 条件。

如果你这样做 String abb = scanner.nextLine( );,你会得到你想要的:扫描器将读取下一行,并将该值分配给 abb

顺便说一句,我怀疑这段代码能否编译; NULL 不是 Java 中的关键字(Java 区分大小写),else 后面需要一个 if。但是您也不需要检查 null,因为 scanner.nextLine() 永远不会 returns(如果没有下一行,它只会抛出 NoSuchElementException)。所以最后一点应该只是一个普通的 else {.

存在一些问题:

  • 您应该将 scanner.nextLine() 结果分配给一个变量。在这种情况下,我认为您必须将其分配给 abb:

    字符串abb = scanner.nextLine();

  • 另外,你忘记了最后一个条件中的if

    else if (abb != null) {
        System.out.println("Unknown Abbreviation");
    }
    
  • 还有别忘了Java是区分大小写的,所以必须是null,而不是NULL.

我可以建议你使用 switch 语句吗,在你的情况下 switch 比嵌套 if 更容易,你可以使用

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

例如

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

祝你好运!乐于助人