我是一般的编程新手,需要一些帮助。在java中使用hashmaps,打破循环和用户输入
我正在使用Java.util.TimeZone检索ID(城市名称)及其时区。我正在使用散列表来实现这一点。我在地图上放置了城市名称和时区,我现在试图要求用户进入他们希望获取时区的城市。
但是,在我的循环中我有一个验证检查,以确保城市名称在哈希映射。它不仅不工作,而且循环也不会中断。它正确地显示了它目前的时间,但不是城市的正确时区(我输入了不同的城市名称,并且都具有相同的时区)。在打印出当地时间后,用户可以选择通过“说是”结束该程序。
如果用户输入yes,那么循环会中断,程序应该结束。如果他们输入了其他东西,它应该继续。
有人可以帮我解决这个问题!这是我的代码。
import java.util.*;
import java.util.TimeZone;
import java.util.Date;
import java.text.DateFormat;
import java.util.HashMap;
class Maps {
public static void main(String[] args) {
String[] Zone = TimeZone.getAvailableIDs();
int i = 0;
for (i = 0; i < Zone.length; i++) {
String zone1 = Zone[i].replaceAll("_", " ");
if (zone1.indexOf('/') != -1) {
zone1 = zone1.substring(zone1.indexOf('/') + 1);
}
TimeZone tz = TimeZone.getTimeZone(zone1);
HashMap hm = new HashMap();
HashMap<String, Integer> map = new HashMap<String, Integer>();
hm.put(zone1, tz);
// System.out.println(hm);
while (hm != null) {
java.util.Scanner input = new java.util.Scanner(System.in);
System.out.println("City?");
String city = input.nextLine();
boolean CityExist = hm.containsKey(city);
if (CityExist == true) {
System.out
.println("I can not find a match to the city, sorry. ");
break;
}
TimeZone tz2 = TimeZone.getTimeZone(city);
DateFormat timeFormatter = DateFormat.getTimeInstance();
Date now = new Date();
System.out.println("Here: " + timeFormatter.format(now));
System.out.print("Local Time: ");
timeFormatter.setTimeZone(tz2);
System.out.println(timeFormatter.format(now));
System.out
.println("If you would like to quit please enter yes: ");
String user = input.nextLine();
if (user.equals("yes") || user.equals("Yes")) {
break;
}
}
}
}
}
请更好地设置您的代码格式,即缩进。这样阅读要容易得多。此外,这看起来像功课,所以我标记为这样。 –