2015-01-09 151 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