扫描时获取空字符串

时间:2015-11-22 19:03:32

标签: graph java.util.scanner

所以我试图从文件输入创建一个Graph。该文件的第一行包含一个int,该文件中的第二行包含D或U,用于定向和无向。但当我做一些故障排除试图在我的代码中找到错误时,我发现我的扫描仪正在扫描第二行作为空字符串而不是字母D.这是我的代码。我重写了文件,所以我知道文件没有错。

文件是:

7
D
(0, 1)
(0, 3)
.
.
.

代码:

public static Graph createFromFile(String filename) throws FileNotFoundException
{
    File file = new File(filename);
    Scanner scan = new Scanner(file);

    int line1 = scan.nextInt();
    vertexCount = line1;
    System.out.println(vertexCount);

    String line2 = scan.nextLine();
    System.out.println(line2);
    String linne2 = "\"" + line2 + "\"";
    System.out.println(linne2);
    if(linne2.equalsIgnoreCase("D")){directed = true;}
    else if(linne2.equalsIgnoreCase("U")){directed = false;}
    else{System.out.println("This is not the proper input");}
}

输出结果为:

7

""
This is not the proper input

有人知道这个问题的来源吗?

1 个答案:

答案 0 :(得分:0)

scan.nextInt函数不会将执行带到下一行。因此,scan.nextLine调用仍在第一行,它从第一行返回其余数据,在本例中基本上是空格。再使用一个scan.nextLine,它将为您提供预期的结果。 另外,请仔细阅读Scanner类的文档,它将清除您的疑虑