Я создаю метод для ввода ввода пользователем и проверяю его, чтобы убедиться, что он правильный. Если это правильно, он вызовет метод и вводит в него вход пользователя. Но по какой-то причине вызов метода не работает. Он не вызывает никаких ошибок, просто он этого не делает. Я разместил оператор печати в конце кода, чтобы убедиться, что он действительно добирается до него, и он это делает, но по какой-то причине он просто не вызывает метод, как это предполагалось. Другой метод работает отлично, если я сам его вызываю и вводю строку через параметры.Почему этот метод не работает?
Код:
public void getGetScheduledShowByFilmInput()////new - omar////
{
BufferedReader reader;
reader = new BufferedReader(new InputStreamReader(System.in));
String filmInput;
filmInput = "";
boolean foundFilm;
foundFilm = false;
System.out.println("Here is a list of films that are currently showing:");
for(Film film : films){
System.out.println(film.getFilmName());
}
System.out.println("");
System.out.println("Please type the film name that you wish to view the corresponding shows for and press enter.");
System.out.println("Type 'exit' and press enter to exit this process.");
while(foundFilm == false){
try{
filmInput = reader.readLine();
}
catch (IOException e){
System.out.println("Error");
}
//If user enters "exit" then return.
if(filmInput.equals("exit")){
return;
}
//Check to see if the film name input by the user corresponds to any film showing.
for(Film film : films){
if(film.getFilmName() == filmInput){
foundFilm = true;
break;
}
}
if(foundFilm = true){
System.out.println("Film found.");
}
else{
System.out.println("The film name you entered has not been recognised. Please try again.");
}
}
//Call the function and input the film name input by the user.
getScheduledShowsByFilm(filmInput); ////This is the code that seems to be the problem.
System.out.println("reached bottom");
}
и второй метод:
public void getScheduledShowsByFilm(String inputFilmName)
{
ArrayList<Show> scheduledShows;
scheduledShows = new ArrayList<Show>();
for(Film film : films){
if(inputFilmName == film.getFilmName()){
for(Schedule schedule : schedules){
scheduledShows.add(schedule.getShowsOfFilm(film));
if(scheduledShows.get(scheduledShows.size() - 1) == null){
scheduledShows.remove(scheduledShows.size() - 1);
}
}
}
}
for(Show show : scheduledShows){
System.out.println("**********************************");
show.getShowDetails();
System.out.println("**********************************");
}
}
Второй метод отлично работает, когда я называю его самостоятельно и ввести параметры вручную, хотя.
Это, наверное, что-то чрезвычайно простое, что я не понимаю! ха-ха, спасибо за вашу помощь :)
Как вы знаете, это не называется? Из того, что я вижу, вы объявляете и инициализируете BufferedReader, но вы ничего не читаете (если только нет более кода, который вы там не размещали. Кроме того, попробовали ли вы распечатать тестовое сообщение в функции, чтобы узнать, он достиг? – orangething
Можете ли вы опубликовать 'getScheduledShowsByFilm'? –
Не обращайте внимания на мой комментарий. Просто заметили ваши изменения. – orangething