2015-01-09 232 views
0

我一直在研究这个代码,它的确很基础,但我刚开始使用Java,我不知道它是怎么回事。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(); 
    } 
} 

当有人进入它打印出是什么意思的缩写之一,如果缩写不存在,它打印出未知的缩写所以我想要做的是。 所以我的问题是,当我运行代码它打印输入METAR缩写,你可以输入一个字符串,但在此之后没有任何反应,有人可以帮我。由于

+1

在Java 7+中,您可以用switch case替换整个'if'' else'。尽管早期版本支持仅切换数字和枚举。这不是你没有收到数据的原因 - 这是由@Kakarot下面解释。 – 2015-01-09 21:11:35

+0

Java'null'不是'NULL'。你可以将它们加载到一个'Map '中,如果它包含你的密钥,那么返回值,否则返回默认值。 – 2015-01-09 21:13:01

+0

您应该考虑使用'equalsIgnoreCase()'或将输入大写,以使项目更加用户友好。如果我期望输入'DZ',我会非常生气。 – 2015-01-09 21:13:40

回答

2

你叫scanner.nextLine(),但从来没有真正捕获或使用其结果。然后,您分配String abb= ""。这意味着abb将永远是""。这与您的if条件不符。

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

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

+0

@Tom很好,赶紧,谢谢! – yshavit 2015-01-09 21:21:56

+0

不客气:)。 – Tom 2015-01-09 21:23:36

+1

非常感谢这对我有用,我非常感谢大家的帮助。 – user2948511 2015-01-09 21:39:25

1

您正在阅读从扫描线但不存储任何地方,将其更改如下:

String abb = scanner.nextLine(); 
2

存在一些问题:

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

    String abb = scanner.nextLine();

  • 而且,你在最后一个条件忘了if

    else if (abb != null) { 
        System.out.println("Unknown Abbreviation"); 
    } 
    
  • 而且不要忘记,Java是大小写敏感的,所以它必须是null,不NULL

2

我可以sugest你使用switch语句,开关是,如果你的情况更容易,而不是嵌套的,你可以使用

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

例如

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

祝你好运!乐于帮助

+0

哦,你是对的,它是由ipad(自动大写)写的:D谢谢指出 – 2015-01-09 21:29:21