gpt4 book ai didi

java - 为什么这个 for 循环在收到输入后会无限运行? ( java )

转载 作者:太空宇宙 更新时间:2023-11-04 11:01:36 25 4
gpt4 key购买 nike

好的,这段代码要求用户输入姓名、年份和性别,并显示所选年份的姓名排名。它从 url 读取数据并将其放入每年的 map 中。然后将这些 map 放入一个数组中,最后将排名显示给用户。我的程序在进入 while 循环后永远不会完成运行。这是代码:

public static void main(String[] args) throws MalformedURLException, IOException {
Scanner input = new Scanner(System.in);
Map[] boyArray = new Map[10];
Map[] girlArray = new Map[10];
System.out.print("Enter year (between 2001 and 2010): ");
String year = input.nextLine();
System.out.print("Enter gender (M or F): ");
String gender = input.nextLine();
System.out.print("Enter name: ");
String name = input.nextLine();

for (int i = 0; i < 10; i++) {
Map<String, String> boys = new HashMap<>();
Map<String, String> girls = new HashMap<>();
try {
java.net.URL url = new java.net.URL("http://www.cs.armstrong.edu/liang/data/babynamesranking"+ year + ".txt");
Scanner urlInput = new Scanner(url.openStream());
while (urlInput.hasNext()) {
String rank = input.next();
boys.put(urlInput.next(), rank);
urlInput.next();
girls.put(input.next(), rank);
urlInput.next();
}
}
catch (IOException ex) {
}
boyArray[i] = boys;
girlArray[i] = girls;
}
if (gender.charAt(0) == 'M') {
System.out.println("The name " + name + " was ranked " + boyArray[Integer.parseInt(year) - 2001].get(name) + " in " + year);
} else {
System.out.println("The name " + name + " was ranked " + girlArray[Integer.parseInt(year) - 2001].get(name) + " in " + year);
}

}

}

最佳答案

正如 @uthark 已经指出的那样,您的程序正在等待输入,因为在 while 循环中,您正在等待来自 System.in 的输入,其中包含行 Stringrank = input.next();(以及行 girls.put(input.next(),rank);)。您可能打算编写 Stringrank = urlInput.next();girls.put(urlInput.next(),rank);,以便排名和女孩名字来自 http://www.cs.armstrong.edu/liang/data/babynamesrankingYYYY.txt

关于java - 为什么这个 for 循环在收到输入后会无限运行? ( java ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46841292/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com