2017-10-13 7 views
0

Je prends en compte une année de sortie d'un film et une liste de films (titre de chaîne, année de sortie int, genre enum etc ...). Le paramètre Année de la chaîne correspond à l'entrée de la recherche par l'utilisateur qui sera comparée à chaque film pour trouver un film dont l'année de publication correspond. Les correspondances seront enregistrées dans une ArrayList. En gardant les paramètres comme (année de la chaîne, films ArrayList), comment puis-je comparer l'année de chaque film avec l'entrée de l'année de l'utilisateur à rechercher? J'ai essayé de les lancer mais je n'ai pas réussi.Comparaison de la variable int d'un objet avec une chaîne

public ArrayList<Film> compareYear(String year, ArrayList<Film> films)       
{ 
    ArrayList<Film> yearMatches = new ArrayList<Film>(); 
    for(Film f : films)     //search through ArrayList of films 
    { 
     int years = f.getYear();   //gets the year for each film and compares it to user input search "year" 
     if(years == year) { 
      yearMatches.add(f); 
     } 
    } 
    return yearMatches; 
} 
+0

Voir ici: https://stackoverflow.com/questions/513832 la façon dont vous pouvez COMPRE chaînes – tomas

+0

Convertir la chaîne à un int ou l'int une chaîne et comparez-la – Jens

+0

Que puis-je dire. Qu'en est-il de vous * ne pas * prendre une année comme une chaîne, et à la place vous avez besoin d'une année comme «int»? –

Répondre

3

Vous pouvez utiliser Integer.parseInt() sur la version de chaîne, pour le convertir en un entier avant de faire votre comparaison:

if (years == Integer.parseInt(year)) 

Ou vous pouvez utiliser String.valueOf la version int de l'année, pour le convertir à une chaîne:

if (String.valueOf(years).equals(year)) 
0

vous pouvez utiliser Integer.parseInt(String value) pour convertir une chaîne à un int. i également remarqué que votre méthode retourne une liste non existante des résultats (releaseYearMatches qui doit être yearMatches), donc je fixe pour vous Aswell

public ArrayList<Film> compareYear(String pYear, ArrayList<Film> pFilms)       
{ 
    int year = Integer.parseInt(pYear); 
    ArrayList<Film> yearMatches = new ArrayList<Film>(); 
    for(Film f : pFilms) { 
     if(f.getYear() == year) 
      yearMatches.add(f); 
    } 
    return yearMatches; 
} 
0

Convertir l'année de chaîne à une année int avant de comparer. Remplacez votre bloc de code avec bloc de code ci-dessous, espérons qu'il vous aidera

public ArrayList<Film> compareYear(String year, ArrayList<Film> films)       
{ 
    int yearInt = Integer.parseInt(year); 
    ArrayList<Film> yearMatches = new ArrayList<Film>(); 
    for(Film f : films)     //search through ArrayList of films 
    { 
     int years = f.getYear();   //gets the year for each film and compares it to user input search "year" 
     if(years == yearInt) { 
      yearMatches.add(f); 
     } 
    } 
    return releaseYearMatches; 
}