簡體   English   中英

為什么此for循環在收到輸入后無限運行? (Java)

[英]Why does this for loop run infinitely after recieving input? (Java)

好的,因此此代碼要求用戶輸入姓名,年份和性別,並顯示所選年份的姓名排名。 它每年從URL中讀取數據並將其放入地圖中。 然后將這些地圖放入數組中,最后將排名顯示給用戶。 進入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輸入,該行的行為String rank = input.next(); (以及命令行girls.put(input.next(), rank); )。 您可能打算編寫String rank = urlInput.next(); girls.put(urlInput.next(), rank); 而是使排名和女孩名來自http://www.cs.armstrong.edu/liang/data/babynamesranking YYYY .txt

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM