gpt4 book ai didi

Java - 如何使用 Scanner 获取最后一行?

转载 作者:行者123 更新时间:2023-12-02 17:52:51 24 4
gpt4 key购买 nike

        while( inStream.hasNextLine() )
{
...

lineList.add( inStream.nextLine() );
}
...

lineList 是一个 ArrayList。该代码可以很好地读取所有内容,但它不会捕获最后一行。文本文件中的最后两行如下所示:

"a sentence here..."
<a blank line here. the blank line is the last line>

我假设它不会捕获它,因为 hasNextLine() 没有检测到这一行之后的另一行?

有什么方法可以获取最后一行?我认为读取直到 EOF 然后捕获异常可能会起作用,但似乎没有办法做到这一点。

编辑:更多信息

public void readLines()
{
lineList = new ArrayList();

try
{
inStream = new Scanner( new File( fileName ) );
}
catch( FileNotFoundException e )
{
System.out.println( "Error opening the file. Try again." );
}


if ( inStream != null )
{
while( inStream.hasNextLine() )
{
++originalLines;

lineList.add( inStream.nextLine() );
}
inStream.close();
}
}

这是整个方法。有什么问题吗?

编辑:更多信息

public static void main(String[] args)
{
Scanner inStream = null;
String test = "";

inStream = new Scanner( test );

while( inStream.hasNextLine() )
{
System.out.println( inStream.nextLine() );
}
}

它不会拾取空字符串,但会拾取空格“”

最佳答案

nextLine() 可以很好地返回最后一行,即使它是空白的。我怀疑你的问题出在其他地方。

String multilinetext =
"Line1\n" +
"Line2\n" +
"\n" +
"Line4\n" +
"\n";
Scanner sc = new Scanner(multilinetext);
while (sc.hasNextLine()) {
System.out.println("[" + sc.nextLine() + "]");
}
/* prints
[Line1]
[Line2]
[]
[Line4]
[]
*/
<小时/>

It will not pick up an empty string

这是设计上的正确行为。如果输入是空字符串,则不能期望 Scanner 说出 hasNextLine() 并在 nextLine() 上返回空字符串,特别是因为这不会使 Scanner 前进超过任何字符。

如果您考虑一下,如果您希望 Scanner 对空字符串说出 hasNextLine(),并在 nextLine() 上返回空字符串,那么这将导致无限循环:它总是 hasNextLine() 并且它总是返回一个空字符串nextLine() 永远。这种行为显然是不切实际的。

关于Java - 如何使用 Scanner 获取最后一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2660942/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com