2015-10-22 34 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中创建你的类的一个实例。