Привет, ребята, я пытаюсь создать массив типа Вопрос, но я думаю, что у меня есть проблема при подсчете вопросов в текстовом файле, текстовый файл имеет строку, затем пустая строка, то другая линия, то пустая строка и так ... и я получаю сообщение об ошибке:Попытка чтения файла по строкам в Java
Exception in thread "main" java.util.NoSuchElementException: No line found at java.util.Scanner.nextLine(Unknown Source) at Question.countQuestions(Question.java:27) at Question.readAllQuestions(Question.java:44) at test.main(test.java:7)
пример текстового файла:
вот мой код:
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class Question {
private String q; private String a;
private String b; private String c;
private String d; private String cA;
public Question(String q, String a, String b, String c, String d, String cA) {
this.q = q; this.a = a;
this.b = b; this.c = c;
this.d = d; this.cA = cA;
}
private static int countQuestions() throws FileNotFoundException{
int counter = 0;
Scanner file = new Scanner (new File("testBank.txt"));
while(file.hasNextLine()){
// check if line empty
String text = file.nextLine();
while(!text.equals("")){
file.nextLine();
}
file.nextLine();
file.nextLine();
file.nextLine();
file.nextLine();
file.nextLine();
file.nextLine();
file.nextLine();
file.nextLine();
file.nextLine();
file.nextLine();
counter++;
}
return counter;
}
public static Question[] readAllQuestions() throws FileNotFoundException{
int numberOfQuestions = countQuestions();
Question [] allQuestions = new Question[numberOfQuestions];
Scanner file = new Scanner (new File("testBank.txt"));
for (int i = 0 ; i < allQuestions.length ; i++){
String text = file.nextLine();
String q = "";
while(!text.equals("")){
q += file.nextLine();
}
String a=file.nextLine();
file.nextLine();
String b=file.nextLine();
file.nextLine();
String c=file.nextLine();
file.nextLine();
String d=file.nextLine();
file.nextLine();
String cA=file.nextLine();
file.nextLine();
Question question = new Question(q,a,b,c,d,cA);
allQuestions[i] = question;
}
return allQuestions;
}
Внутри внутренний 'while' петли вы не обновляя' Text', но вы используете его в условие цикла, поэтому результат оценки состояния будет не меняются во время цикла, который будет либо циклически навсегда, либо даже не один раз, в зависимости от того, какое значение имеет значение 'text' перед входом в цикл. – SantiBailors