扫描仪会跳过文本文件中的行,并且不会打印前导空格

时间:2014-04-09 01:39:57

标签: java file-io java.util.scanner

我想在文本文件中读取并在我的Java程序中打印响应。

我的文本文件包含许多行,每行包含一系列成绩。其中一些有领先的空白(表示空白)。

我有两个问题: 1.文本文件中的第一行不打印;它从第二行开始 2.其中一个等级线在开头包含两个“空格”,表示空白;那些空白区域没有打印。

以下是我的代码。我可以解决这个问题的任何输入?这里的新程序员非常感谢您的帮助。

public static void printResponses (File f) throws FileNotFoundException
   {
      Scanner input = new Scanner (f);
      String line;
      int count = 1;

      while (input.nextLine() != null)
      {
         line = input.nextLine();
         System.out.println ("Student #" + count +"\'s responses: " + line);
         count++;
      }  
      System.out.println ("We have reached \"end of file!\"\n");  

      if (!f.exists())
      {
         System.out.println ("An error occurred. Please try again.");
         System.exit(0);
      }                                                             
   }

1 个答案:

答案 0 :(得分:3)

每次拨打input.nextLine()时,您都会使用“令牌”#39;来自输入文件。也就是说,Scanner input会通过您提供的输入并且“消耗掉”'扫描它时的一条线。

当您致电while (input.nextLine() != null)时,您正在使用该文件的第一行。

您想要致电while (input.hasNextLine()),这样您就不会在每次循环迭代开始时使用令牌而不使用它。