【问题标题】:Comparing an object's int variable with a String将对象的 int 变量与字符串进行比较
【发布时间】:2017-10-13 11:21:45
【问题描述】:

我正在接收电影发行年份的字符串和电影的 ArrayList(字符串标题、int 发行年份、枚举类型等)。 String year 参数是用户输入的搜索,它将与每部电影进行比较以找到具有匹配发行年份的电影。匹配项将保存到 ArrayList 中。通过将参数保持为 (String year, ArrayList movies),我如何将每部电影的年份与用户输入的年份进行比较?我试过投射这些,但没有成功。

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;
}

【问题讨论】:

  • 查看这里:stackoverflow.com/questions/513832 了解如何压缩字符串
  • 将字符串转换为int或将int转换为字符串并进行比较
  • 我能说什么。你呢不要将年份作为字符串,而是将年份作为int
  • 另外,那个方法的名字不应该是compareYear,而是queryByYear或者类似的名字。

标签: java arrays list casting compare


【解决方案1】:

您可以在字符串版本上使用Integer.parseInt(),在进行比较之前将其转换为整数:

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

或者您可以在年份的 int 版本上使用String.valueOf,将其转换为字符串:

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

【讨论】:

    【解决方案2】:

    您可以使用Integer.parseInt(String value) 将字符串转换为int。 我还注意到您的方法返回一个不存在的结果列表(releaseYearMatches 必须是 yearMatches),所以我也为您修复了这个问题

    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;
    }
    

    【讨论】:

      【解决方案3】:

      在比较之前将字符串年份转换为 int 年份。用下面的代码块替换你的代码块,希望它会有所帮助

      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;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-03-17
        • 1970-01-01
        • 2023-03-23
        • 2012-11-27
        • 1970-01-01
        • 2022-08-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多