Java如果Else语句为缩写

时间:2015-01-09 21:07:44

标签: java if-statement

我一直在研究这个代码,它非常基本,但我刚开始使用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( );
    }
}

所以我要做的是当有人输入其中一个缩写时,它打印出它意味着什么,如果缩写不存在,则打印出Unknown Abbreviation。 所以我的问题是,当我运行代码时,它打印输入METAR缩写,你可以输入一个字符串,但之后没有任何反应,有人可以帮助我。感谢

4 个答案:

答案 0 :(得分:2)

您致电scanner.nextLine()但从未实际捕获或使用其结果。然后,您指定String abb= ""。这意味着abb始终为""。这与您if的任何条件都不匹配。

如果您执行String abb = scanner.nextLine( );,您将获得所需内容:扫描程序将读取下一行,并将该值分配给abb

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

答案 1 :(得分:2)

存在一些问题:

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

    String abb = scanner.nextLine();

  • 此外,您忘记了最后一个条件中的if

    else if (abb != null) {
        System.out.println("Unknown Abbreviation");
    }
    
  • 并且不要忘记Java区分大小写,因此它必须是null,而不是NULL

答案 2 :(得分:2)

我建议你使用switch语句,在你的情况下切换更容易而不是嵌套if,你可以使用

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

例如

    switch(abb){
case "hello":
System.out.println("hi there")
break;
case "else string":
//do something 
break;
}
祝你好运!很乐意提供帮助

答案 3 :(得分:1)

您正在从扫描仪读取该行但未将其存储在任何位置,请按以下方式进行更改:

String abb = scanner.nextLine( );