2016-09-20 49 views
-2

我正在读取一个文件,并希望只打印以空格开头的行和所有其他行,我想打印出“hi”。这是我现在拥有的。通过文件打印线循环匹配模式

while((first = frBr.readLine()) != null) { 

     if(first.startsWith(" ")) { 
      System.out.println(first); 
     } 
     else if((!(first.startsWith(" "))){ 
       System.out.println("Hi"); 

     } 
} 
+0

可以代替否则,如果((!只有其他{它不一样的东西,使它的可读性,什么是你的问题吗?请除此之外的事实,你”适当的请求 – HRgiger

+3

更新您的问题重新测试相同的条件两次('else'已经这样做了),你在这里有问题吗? – RealSkeptic

+0

如果第一个条件是错误的,那么你可以假设第二个条件是真的,而不是重复测试 –

回答

0

对于else子句,您不需要额外的测试。

while ((first = frBr.readLine()) != null) { 
    if (first.startsWith(" ")) { 
     System.out.println(first); 
    } else { 
     System.out.println("Hi"); 
    } 
} 

注意,有可能是一个行开始的字符,如标签\t),似乎空间,但不属于空间。在这种情况下,您打印嗨而不是行。

如果您需要打印任何白字你可以使用isWhiteSpaceCharacter的方法行:

确定指定字符是根据Java的

这里是空白代码使用它。

while ((first = frBr.readLine()) != null) { 
    // Check also if first has at least one character 
    if (Character.isWhiteSpace(first.charAt(0)) { 
     System.out.println(first); 
    } else { 
     System.out.println("Hi"); 
    } 
}