2012-04-27 63 views
0

嘿,我試圖從用戶的字符串輸入(在這種情況下,電影的名字,如好漢堡)。我有一個從我正在迭代的類Film的數組列表。在每次迭代中,將調用類Film實例中的方法,該方法返回影片名稱的String。當我比較這兩者時,似乎並不認識到它們是平等的,我無法弄清楚爲什麼。爲什麼這段代碼不會意識到這兩個變量是相同的?

繼承人是要帶輸入和比較這兩個代碼:

//獲取用戶輸入的影片。

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和長度的電影。例如:電影4 =新電影(「死卒」,4,1.5);電影5 =新電影(「酷跑」,5,2)。 – 2012-04-27 00:38:37

+0

檢查電影名稱的大小寫,並確保所有間距(之前,之內,之後)是相同的。向我們顯示您的輸入數據。 – 2012-04-27 00:31:09

+0

感謝您的回覆,所有的情況和間距是相同的。我正在製作一個參數名稱,ID和長度的電影。例如:電影4 =新電影(「死卒」,4,1.5);電影5 =新電影(「酷跑」,5,2); – 2012-04-27 00:36:14

回答

3

getFilmName()功能看起來像一個相當有用的,但前提是你最終調用它:-)

你似乎設置filmName在開始爲空,那麼你從來沒有真正變化它(例如通過呼叫getFilmName())。因此,爲了比較目的,它將是空的。

我懷疑你可能需要類似:

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

非常感謝你!這肯定是那麼簡單!哈哈,傻我,謝謝你所有的迴應,他們非常感謝:) – 2012-04-27 00:56:26

0

嘗試把這個代碼:該if(inputFilmName.equals(filmName)){前行

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

,你會看到爲什麼它是不相等的。哦,注意單引號..