如何检测Scanner已收到的BlankLine?

时间:2012-09-27 13:16:11

标签: java java.util.scanner

我想获取数据表单文本文件,并使用Scanner获取数据表单文本文件。  它的配置文件保存模式

name
status
friend
friend
.
.
(Blank line)

空行是每个配置文件分开的。(朋友将循环直到下一行是空行)

john 
happy
james

james
sad
john

我编写代码来获取像这样的文件格式文本

try{
    Scanner fileIn = new Scanner(new FileReader("testread.txt"));
    while(fileIn.hasNextLine()){           
         String line = fileIn.nextLine();
         String linename = fileIn.nextLine();
         String statusline = fileIn.nextLine();
         println("name "+linename);
         println("status "+statusline);
         while(/*I asked at this*/)){
             String friendName = fileIn.nextLine();
             println("friend "+friendName); 
         }                              
    }
}catch(IOException e){
    println("Can't open file");
}

我应该用什么条件来检测个人资料之间的空行?

4 个答案:

答案 0 :(得分:3)

您可以实现如下所示的自定义功能,如果它不为空,将返回nextLine

 public static String skipEmptyLines(Scanner fileIn) {
    String line = "";
    while (fileIn.hasNext()) {
        if (!(line = fileIn.nextLine()).isEmpty()) {
            return line;
        }
    }
    return null;
}

答案 1 :(得分:1)

您只需检查scanner.nextLine()换行符"\n"(我的意思是"",因为nextLine()在任何行的末尾都没有读取"\n" )..如果相等,那将是一个空白行。

if (scanner.nextLine().equals("")) {
    /** Blank Line **/
}

顺便说一句,您的代码存在问题: -

while(fileIn.hasNextLine()){          
         String line = fileIn.nextLine();
         String linename = fileIn.nextLine();
         String statusline = fileIn.nextLine();

您假设fileIn.hasNextLine()将确认接下来的三行为not null

每当你做fileIn.nextLine()时,你需要检查它是否可用..或者你会得到例外......

* 编辑: - O.o ......我看到你已经处理了异常..然后就没有问题..但是你仍然应该修改上面的代码..它看起来不漂亮..

答案 2 :(得分:0)

试试这个......

while(scanner.hasNextLine()){

    if(scanner.nextLine().equals("")){

            // end of profile one...

       }

}

答案 3 :(得分:0)

使用scanner.hasNextLine()方法检查现有行后,您可以使用以下条件:

String line = null;
if((line = scanner.nextLine()).isEmpty()){
   //your logic when meeting an empty line
}

并在逻辑中使用line变量。

相关问题