我有一个项目,涉及我创建一个程序,读取用户输入,然后程序告诉他们他们在哪个区域,但我似乎不知道如何添加多个字符串。
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");
}
}
}
看起来你想要一个循环。其中一个选项是,当用户进入一个特殊的"区域"时停止(如下面的quit)。
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();
}
我不完全确定你的意思是"但我似乎无法添加多个字符串",但你似乎打印扫描仪对象"System.out"。println(输入+" is in Zone 2");"而不是答案system . out。println(答案+" is in Zone 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");
}
}
您可能需要使用else 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;
}
}
}
还有其他方法可以解决这个问题,而不需要如此复杂的控制结构。只需创建一个Map,将站点名称作为键并将其区域作为值。当你得到一个输入时,你只需在地图中查找它并检索它的区域。
为什么不创建一个以区域为键,值为该区域下的站点列表的地图呢?
你可以有一个方法来处理地图的人口…
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;
}
那么你的main可以看起来像…
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方法中执行所有逻辑,而是在main方法中创建类的实例。