2015-10-22 33 views
0

我有一個項目,涉及到我創建一個程序,讀取用戶輸入和程序,然後告訴他們他們在哪個區域,但我似乎無法如何添加多個字符串。用掃描儀讀取Java輸入的許多字符串

import java.util.*; 

public class hello { 

    public static void main (String args[]){ 
    Scanner input = new Scanner (System.in); 
    String answer = input.nextLine(); 

    // I would like more stations to be added but I don't no how 
    if ("Mile End".equals(answer)) { 
     System.out.println(input +" is in Zone 2"); 
    } else { 
     System.out.println("That is not a Station, please try again"); 
    } 
    } 

} 
+1

這與JavaScript無關。 – Griffith

回答

1

看起來好像你想要一個循環。一種這樣的選擇是當用戶進入一個特殊的「區域」時停止(如下面的退出)。

String answer = input.nextLine(); 
while (!answer.equalsIgnoreCase("quit")) { 
    // I would like more stations to be added but I don't no how 
    if ("Mile End".equals(answer)) { 
     System.out.println(input +" is in Zone 2"); 
    } else { 
     System.out.println("That is not a Station, please try again. " 
       + "Quit to stop."); 
    } 
    answer = input.nextLine(); 
} 
0

我不完全確定你的意思是「但我似乎不能如何添加多個字符串。」但您似乎打印掃描儀對象「System.out.println(輸入+」在區域2中)「;」而不是答案 System.out.println(答案+「在區域2中」); 難道是因爲這樣你沒有看到預期的結果?

public static void main (String args[]){ 
    Scanner input = new Scanner (System.in); 
    String answer = input.nextLine(); 
    if (answer.equals("Mile End")) { // i would like more stations to be added but i dont no how 
     System.out.println(answer +" is in Zone 2"); 
    } else { 
     System.out.println("That is not a Station, please try again"); 
    } 
    } 
0

您可能需要其他的if語句

import java.util.*; 

public class hello { 

    public static void main (String args[]){ 
    Scanner input = new Scanner (System.in); 
    String answer = input.nextLine(); 

    if ("Mile End".equals(answer)) { 
     System.out.println(answer+" is in Zone 2"); 
    } else if("Hobbitland".equals(answer) { 
     System.out.println(answer +" is in Zone 42"); 
    } else 
     System.out.println("That is not a Station, please try again"); 
    } 
    } 
} 

或者,您也可以使用一個開關,如:

import java.util.*; 

public class hello { 

    public static void main (String args[]){ 
    Scanner input = new Scanner (System.in); 
    String answer = input.nextLine(); 

    switch(answer){ 
     case "Mile End": 
     System.out.println(answer +" is in Zone 2"); 
     break; 
     case "Hobbitland": 
     System.out.println(answer +" is in Zone 42"); 
     break; 
     default: 
     System.out.println("That is not a Station, please try again"); 
     break; 
    } 
    } 
} 

還有其他的手段來解決,而不需要等這個問題一個複雜的控制結構。只需創建一個將您的電臺名稱保存爲密鑰並將其區域保存爲值的地圖。當你得到一個輸入時,你只需在你的地圖上查找它並找回它的區域。如果它不在您的地圖中,則打印出錯信息。

0

爲什麼不創建一個地圖,其中區域是密鑰,值是在該區域下的電臺列表?

然後,您可以有一個處理地圖的羣體的方法...

private static Map<String, List<String>> createZoneMap() { 

    Map<String, List<String>> zoneMap = new HashMap<String, List<String>>(); 

    // Probably want to populate this map from a file 

    return zoneMap; 
} 

然後你的主能看起來像......

public static void main(String args[]) { 

    Map<String, List<String>> zoneMap = createZoneMap(); 

    Scanner scan = new Scanner(System.in); 

    String input; 

    while (true) { 

     input = scan.nextLine(); 

     // Some code to exit the application... 
     if (input.equalsIgnoreCase("quit")) {    
      System.out.println("Exiting..."); 
      System.exit(1); 
     } 

     String zone = findZone(zoneMap, input); 

     if (zone != null) { 
      System.out.println(input + " is in " + zone); 
     } else { 
      System.out.println("That is not a Station, please try again"); 
     } 
    } 
} 

然後,當你在輸入通過地圖查找站名以查找該站所屬的區域,如果它不存在則返回null或其他東西

private static String findZone(Map<String, List<String>> zoneMap, String station) { 

    // Maybe make this more versatile so that it does not care about case... 

    for (Map.Entry<String, List<String>> entry : zoneMap.entrySet()) { 
     if (entry.getValue().contains(station)) { 
      return entry.getKey(); 
     } 
    } 
    return null; 
} 

希望這對你來說是一個很好的起點。你也可以考慮放棄在主要方法中執行所有的邏輯,而是在main中創建你的類的一個實例。