Может ли кто-нибудь понять, почему это заставляет Java-сервлет зависать? Компилирует, но CPU идет на 100%, поэтому я предполагаю, что где-то есть бесконечный цикл?Чтение из файла бесконечного цикла в Java
quotes.txt имеет только 10 линий.
String line = "";
try {
String filePath = new File("").getAbsolutePath();
filePath += "/quotes.txt";
Scanner scan = new Scanner(filePath);
int lines = 0;
while (scan.hasNextLine()) {
lines++;
}
Random random = new Random();
int randomInt = random.nextInt(lines);
for (int i = 0; i < randomInt; i++) {
line = scan.nextLine();
}
scan.close();
} catch (Exception e){
line = e.getMessage();
}
Благодаря
ваше время проверки цикла, если он не имеет следующую строку, но не читает, что следующая строка –
'в то время как (scan.hasNextLine())' - Вы никогда не читали со сканера в этом цикле. Так что, если есть даже одна строка, то навсегда будет доступна следующая строка. – David
@ A.A. Первый цикл подсчитывает строки так, что второй цикл выбирает случайное число строк, которые фактически находятся в файле. –