簡體   English   中英

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

所以我想做的是,當有人輸入縮寫詞時,它會打印出含義,如果縮寫詞不存在,則會打印出未知縮寫詞。 所以我的問題是,當我運行代碼時,它會打印出輸入METAR縮寫,您可以輸入一個字符串,但是在此之后什么都沒有發生,有人可以幫幫我。 謝謝

您調用scanner.nextLine()但實際上從未捕獲或使用其結果。 然后,您分配String abb= "" 這意味着abb將始終為"" 這與您的任何if條件都不匹配。

如果您執行String abb = scanner.nextLine( ); ,您將獲得所需的內容:掃描程序將讀取下一行,並將該值分配給abb

順便說一句,我懷疑這段代碼是否可以編譯。 NULL不是Java中的關鍵字(Java區分大小寫), else if在其后需要if 但是您也不需要檢查null ,因為scanner.nextLine()永遠不會返回它(如果沒有下一行,它只會拋出NoSuchElementException )。 所以最后一點應該只是一個普通的else {

有一些問題:

  • 您應該將scanner.nextLine()結果分配給一個變量。 在這種情況下,我認為您必須將其分配給abb

    字符串abb = Scanner.nextLine();

  • 此外,您還忘了最后一個條件中的if

     else if (abb != null) { System.out.println("Unknown Abbreviation"); } 
  • 並且不要忘記Java是區分大小寫的,因此它必須為null ,而不是NULL

我可以建議您使用switch語句,在這種情況下,使用switch比嵌套更容易,如果可以的話

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

例如

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

祝好運! 樂意效勞

您正在從Scanner中讀取該行,但沒有將其存儲在任何地方,請按以下步驟進行更改:

String abb = scanner.nextLine( );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM