А есть тут Java-знатоки? Нужна небольшая помощь.

Статус: Offline
Реєстрація: 11.12.2007
Повідом.: 1380
А есть тут Java-знатоки? Нужна небольшая помощь.

Приветствую. Учу понемногу Java, возникла необходимость написать программку, которая построчно читает текстовый файл и выводит текст из массива строк в label по нажатию на кнопку. В целом, вроде, получается. Но есть проблемка. При первом нажатии на кноку не происходит вообще ничего, от слова совсем, по второму нажатию - в label прилетает вторая строка из текстовика...
Просьба повернуть мой нос по ветру) Не прошу писать за меня, просто подскажите где копать...
Если еще что-то по коду нужно, для более полного понимания проблемы, предоставлю.

/*получение текста вопроса из массива,конвертация в строку и передача вопроса в приложение*/
private void makeLabel() throws Exception {
setQuestion();
currentQuestion = (currentQuestion + 1) % questions.length;
question.setText(questions[currentQuestion].toString());
}

/*вызов следующего вопроса*/
@FXML
public void nextClicked() {
next.setOnAction(event -> {
try {
makeLabel();
} catch (Exception e) {
e.printStackTrace();
}
});
 
Сделай логгер и с его помощью выводи текущие значения индексов массива, будет видно как меняется переменная, лучше даже сделай логгирование всех методов, конструкторов, чтобы видеть как что инициализируется и меняется. И что за метод setQuestion() ? обычно сеттеры с аргументами делают
 
Сделай логгер и с его помощью выводи текущие значения индексов массива, будет видно как меняется переменная, лучше даже сделай логгирование всех методов, конструкторов, чтобы видеть как что инициализируется и меняется. И что за метод setQuestion() ? обычно сеттеры с аргументами делают

Оу, сорри, косяк в именовании. Спасибо за наводку. Здесь таки get будет правильнее. Этот метод читает текстовый файл и конвертит его в массив строк.
private Question[] setQuestion() {
questionInput.read();
questions = questionInput.questionListToArray();
return questions;
}
собственно метод read();
public void read() {
try {
BufferedReader reader = new BufferedReader(new FileReader("\\path"));
//String line;
while ((line = reader.readLine()) != null) {
Question question = new Question();
question.setQuestion(line);
questionList.add(question);
}
} catch (IOException e) {
e.printStackTrace();
}

}
 
и зачем toString(), если массив стрингов можно изначально сделать

В данном случае это массив объектов Question, посему .toString.
Если где-то нелогично рассуждаю - поправьте) На ошибках учатся.
 
из того что тут можно понять я бы лист квешенов создавал в методе read() и возвращал его вроде public List<Question> read(){ ... return questionList;}
и его не обязательно в обычный массив, а также get по индексу
и логгирование в помощь
 
из того что тут можно понять я бы лист квешенов создавал в методе read() и возвращал его вроде public List<Question> read(){ ... return questionList;}
и его не обязательно в обычный массив, а также get по индексу
и логгирование в помощь

Принято. Спасибо) Буду копать. :пиво:
 
Никогда не подумал бы что достаточный код в 10 строк (образно) можно так раздуть...
 
Назад
Зверху Знизу