有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Scanner在大约2400个字符后切断了我的字符串

我有一些非常基本的代码,比如

while (scan.hasNextLine())
{
    String temp = scan.nextLine();
    System.out.println(temp);
}

扫描是扫描文件

然而,在一行长度约为6k字符的特殊行中,temp在2470个字符后剪切。当它停止时没有什么特别的;它在“澳大利亚”这个词的中间。如果我删除了行中的字符,它删除的位置会发生变化;e、 g.如果我删除文件中的0-100个字符,那么扫描器将获得以前的100-2570个字符

我以前用过扫描器来扫描更大的字符串。知道会出什么问题吗


共 (1) 个答案

  1. # 1 楼答案

    猜测一下,你可能在截止点有一个流氓角色:在十六进制编辑器中查看文件,而不仅仅是文本编辑器。也许在字符串的中间有一个嵌入的空字符,或者可能是{Scanner.nextLine()不太可能随意砍掉它

    另一个想法是,你100%确定它不是全部存在吗?也许是系统。出来println正在切碎字符串——又是因为其中嵌入了一些“奇数”字符?如果打印temp.length(),会发生什么

    编辑:我误解了如果你删掉一些字符会发生什么。很抱歉。还有几件事需要检查:

    • 如果你用BufferedReader.readLine()而不是Scanner来阅读这些行,它能理解所有内容吗
    • 您是否指定了正确的编码?我不明白为什么会以这种特殊的方式出现,但这是需要思考的
    • 如果用“A”(文件中)替换行中的所有字符,这会改变什么吗
    • 如果你在这一行之前加了一行(或者在它之前删除了一行),这会改变什么吗

    如果所有这些都失败了,我只想调试到Scanner.nextLine()——Java的优点之一是可以调试到标准库中