Java 程序未从URL读取输入

Java 程序未从URL读取输入,java,Java,所以我的程序应该从URL中读取一个名字列表,以便玩猜名字游戏;但是,该程序似乎无法从URL读取任何内容,更不用说将其添加到ArrayList了。运行该程序时,我得到的结果是该列表中有0个名称,这意味着没有从URL添加任何名称 当我使用调试器并单步进入URL时,我会收到一个错误消息说不能单步执行,选定的线程未挂起 import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; impor

所以我的程序应该从URL中读取一个名字列表,以便玩猜名字游戏;但是,该程序似乎无法从URL读取任何内容,更不用说将其添加到ArrayList了。运行该程序时,我得到的结果是该列表中有0个名称,这意味着没有从URL添加任何名称

当我使用调试器并单步进入URL时,我会收到一个错误消息说不能单步执行,选定的线程未挂起

import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;

public class NameGuesser {
   private ArrayList<String> lastNames = new ArrayList<String>();
Scanner input = new Scanner(System.in);
   public void readNames() throws IOException, MalformedURLException {
       // Read the last names

       URL url = new URL(
               "http://www2.census.gov/topics/genealogy/1990surnames/dist.all.last");

       Scanner in = new Scanner(url.openStream());
       while (in.hasNext()) {
           // Read the last name
           String lastName = in.next();
           lastNames.add(lastName);

           // Ignore the statistical information
         //  in.nextDouble();
          // in.nextDouble();
         //  in.nextInt();
       }
       in.close();

       // Print out the number of names in the file and
       // Sort the names using Collections
       Collections.sort(lastNames);
       System.out.println("There are " + lastNames.size() + " names in this list");
   }

   public int guessName() {
       int counter = 0;
       int low = 0;
       int high = lastNames.size();
       int mid = high / 2;
       boolean notFound = true; //variables to hold game info
       String userInput = "";
       while (notFound) { //while the name is not found
           System.out.println("Does your name come before " + lastNames.get(mid) + " in the dictionary? (Y/N), or is " + lastNames.get(mid) + " your name? (S)");
           userInput = input.next(); //ask if it is in the middle
           if (userInput.equalsIgnoreCase("Y")) { //if before, set new upper bound
               high = mid;
               mid = ((high - low)/2) + low;
               counter++;
           } else if(userInput.equalsIgnoreCase("N")){ //if after, set new lower bound
               counter++;
               low = mid;
               mid = ((high - low)/2) + low;
           }
           else{ //if name is found, return counter
               System.out.println("Your name, " + lastNames.get(mid) + ", was found with " + counter + " guesses.");
               input.close();
               return counter;
           }
           if(high == low){ //if upper and lower bounds are equal
               System.out.println("Is your name: " + lastNames.get(mid) + " ? (Y/N)");
               userInput = input.next(); //ask if name is found
               if(userInput.equalsIgnoreCase("Y")){ //if yes, print success, counter, and return counter
                   System.out.println("Your name, " + lastNames.get(mid) + ", was found with " + counter + " guesses.");
                   input.close();
                   return counter;
               }
               else if(userInput.equalsIgnoreCase("N")){ //if no, inform user that guesser failed
                   System.out.println("Name not found. Attempted locating with " + counter + " guesses");
                   input.close();
                   return counter;
               }
           }
       }
       input.close();
       return counter;
   }
}

您是否尝试过在浏览器中打开URL?它重定向到安全协议HTTPS。
将您的URL更改为,应该可以正常工作。

非常感谢,我不敢相信我忽略了这个简单的细节。我的程序现在可以运行了。
import java.io.IOException;
import java.net.MalformedURLException;


    public class NameGame {

       public static void main(String[] args) throws MalformedURLException, IOException {
           NameGuesser game = new NameGuesser();

             game.readNames(); 
       }
    }