В предположении, у вас может быть мошеннический символ в точке отсечения: посмотрите на файл в шестнадцатеричном редакторе, а не просто в текстовом редакторе. Возможно, есть встроенный нулевой символ или, возможно, \r
в середине строки? Мне кажется маловероятным, что Scanner.nextLine()
просто порубит его произвольно.
Как еще одна мысль, вы на 100% уверены, что это не все там? Возможно, System.out.println прерывает строку - опять же из-за какого-то «странного» символа, встроенного в нее? Что произойдет, если вы напечатаете temp.length()
?
РЕДАКТИРОВАТЬ: Я немного неправильно понял, что произойдет, если вы отключите некоторые символы. Извини за это. Несколько других вещей, чтобы проверить:
- Если вы читаете строки с
BufferedReader.readLine()
вместо Scanner
, все ли получается?
- Вы указываете правильную кодировку? Я не понимаю, почему это проявляется именно таким образом, но есть над чем подумать ...
- Если вы замените все символы в строке на «A» (в файле), это что-нибудь изменит?
- Если вы добавите дополнительную строку перед этой строкой (или удалите строку перед ней), это что-нибудь изменит?
Если все это не сработать, я просто отлаживаю в Scanner.nextLine()
- одна из приятных особенностей Java - то, что вы можете отлаживать в стандартных библиотеках.