2012-04-27 2 views
0

안녕하세요, 사용자로부터 문자열 입력 (이 경우 Good Burger 등의 영화 이름)을 사용하려고합니다. 나는 내가 반복하는 클래스 영화의 아라 일리 스트를 가지고있다. 각 반복마다 Film 클래스의 인스턴스에있는 메서드가 호출되어 영화 이름의 String을 반환합니다. 이 두 가지를 비교할 때, 그것이 평등하다는 것을 인식하지 못하는 이유를 알 수 없습니다. 이 코드가이 두 변수가 동일하다는 것을 왜 인식하지 못합니까?

는 Heres는 입력을 복용하고 두 가지를 비교하는 것 코드 :

// 사용자에 의해 필름을 입력하세요. 여기

int numberOfFilmsCheck; 
    numberOfFilmsCheck = 0; 
    BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); 
    Film tempFilm; 
    System.out.println("Please enter the names of the films you wish to be in the new schedule"); 
    System.out.println("Press enter after each one."); 

    while(numberOfFilmsCheck < numberOfFilms){ 
     boolean foundFilm; 
     foundFilm = false; 
     String inputFilmName = null; 
     tempFilm = null; 
     String filmName; 
     filmName = null; 
     try{ 
      inputFilmName = reader.readLine(); 
      System.out.println(inputFilmName); 
     } 
     catch (IOException e){ 
      System.out.println("Error"); 
     } 

     for(Film film : films){ 
      film.printFilmName(); 
      if(inputFilmName.equals(filmName)){ 
       foundFilm = true; 
       tempFilm = film; 
       System.out.println("Found film name"); 
       break; 
      } 
     } 

     if(foundFilm == true){ 
      newFilmsForSchedule.add(tempFilm); 
      numberOfFilmsCheck++; 
     } 
     else{ 
      System.out.println("The film you entered has not been recognised."); 
      System.out.println("Please enter the film name as shown above."); 
     } 

이 영화의 이름을 반환 클래스 필름의 코드입니다 : 당신이 거기에있는 불량 인쇄 문을 발견 한 경우

public String getFilmName() 
{ 
    return filmName; 
} 

그 날 코드가 제대로 작동 확인을합니다.

도움을 주시면 감사하겠습니다. 감사합니다

+0

입력의 대소 문자와 공백은 모두 영화 이름과 동일합니다. 매개 변수 이름, ID 및 길이를 사용하는 영화를 만듭니다. 예를 들면 다음과 같습니다 : film4 = new Film ("The Death Stroke", 4, 1.5); film5 = 새로운 영화 ("Cool Runnings", 5, 2). –

+0

필름 이름의 대소 문자를 확인하고 모든 간격 (앞, 뒤, 뒤)이 동일한 지 확인하십시오. 입력 데이터를 보여주십시오. –

+0

답장을 보내 주셔서 감사합니다. 대소 문자를 모두 사용하십시오. 매개 변수 이름, ID 및 길이를 사용하는 영화를 만듭니다. 예를 들면 다음과 같습니다 : film4 = new Film ("The Death Stroke", 4, 1.5); film5 = 새로운 영화 ("Cool Runnings", 5, 2); –

답변

3

getFilmName() 기능은 있지만, 꽤 유용처럼 보이는 당신은 당신 결코 실제로 변화을 (당신은 시작에 null로 filmName을 설정하는 표시

:-)를 호출 끝날 경우에만 예 : getFilmName()). 따라서 비교를 위해 null이됩니다.

for(Film film : films){ 
    film.printFilmName(); 
    filmName = film.getFilmName();    // <-- Added this. 
    if(inputFilmName.equals(filmName)){   // <-- So that this works. 
     foundFilm = true; 
     tempFilm = film; 
     System.out.println("Found film name"); 
     break; 
    } 
} 
+0

정말 고마워요 !! 그것은 그 것처럼 단순한 것이 될 수 밖에 없었습니다! 하하, 바보 같은 날, 당신의 모든 응답을 주셔서 감사합니다, 그들은 크게 감사합니다 :) –

0

이 코드를 넣어보십시오 :

난 당신이 뭔가를해야 할 수도 있습니다 의심이 동일하지 않은 이유를 볼 수

System.out.println("'" + inputFilmName + "' vs '" + filmName + "'") 

if(inputFilmName.equals(filmName)){ 라인 전에. 오, 작은 따옴표를 주목 해주세요.

관련 문제