【问题标题】:Java for loop with an ArrayList带有 ArrayList 的 Java for 循环
【发布时间】:2012-10-09 20:17:56
【问题描述】:

这是我的 ArrayList contain 的内容

HPDH-1,001, Check-out date: 7/7/7

JTI-1,001, Check-out date: 7/7/7

我的代码:

for (int i = 0; i < contain.size(); i++) {
    if (contain.get(i).contains(code)) {
        System.out.println(contain.get(i));
    }
}

问题是我的变量代码是字符串“JTI-1” 为什么它不给我 JTI-1 输出? 我试图让它显示变量代码的值。 我想删除 contains.get(i) 如果它只给我我输入的那个。

【问题讨论】:

  • "为什么它不只给我 JTI-1 输出?" 这里的问题是什么?它显示了你不期待的什么?
  • 请包含代码的输出,同时确保您已将 ArrayList 的泛型类型指定为
  • contains方法中使用之前尝试code.trim()
  • 公平竞争 AmitD 的神奇能力是猜测您在问题中输入的字符串中有一个空格...您的 code 字符串显然不是您所说的 "JTI-1",因为 @987654328 @ 解决了你的问题。

标签: java for-loop arraylist


【解决方案1】:

我认为基本上代码是正确的。我会检查您的输入并确保它们与您的想法相符。

我可能会将你的循环重写为:

for (String s : contain) {
   if (s.contains(code)) {
      // found it
   }
}

使用对象迭代器(以上假设您有一个ArrayList&lt;String&gt;)。也许重命名contain。不是很清楚这是什么。

【讨论】:

    【解决方案2】:

    假设字符串列表,代码是正确的。 I have not modified any of your source code just to give you idea that it works fine.

        List<String> contain = new ArrayList<String>();
        contain.add("HPDH-1,001, Check-out date: 7/7/7");
        contain.add("JTI-1,001, Check-out date: 7/7/7");
        String code = "JTI-1 ";
        for (int i = 0; i < contain.size(); i++) {
            if (contain.get(i).contains(code.trim())) {<---Use trim it is possible that code may have extra space
                System.out.println(contain.get(i));
            }
        }
    

    【讨论】:

    • 我是否会像这样在每次迭代中再次调用 'contain.size()'?
    • Arraylist size() 函数只返回整数值,因此不会产生任何影响。在上面的答案中,正如我所提到的,我不想重构代码。
    【解决方案3】:

    您的代码是正确的,但我也建议您使用迭代器:

    import java.util.ArrayList;
    import java.util.Arrays;
    
    
    public class Main {
    
        public static void main(String[] args) throws Exception {
    
            ArrayList<String> contain = new ArrayList<String>(Arrays.asList("HPDH-1,001, Check-out date: 7/7/7",
                    "JTI-1,001, Check-out date: 7/7/7"));
    
            String code = "JTI";
    
            // your loop
            for (int i = 0; i < contain.size(); i++) {
                if (contain.get(i).contains(code)) {
                    System.out.println(contain.get(i));
                }
            }
    
            // my suggestion
            for (String s : contain) {
                   if (s.contains(code)) {
                      System.out.println(s);
                   }
            }
        }
    }
    

    输出:

    JTI-1,001,退房日期:7/7/7

    JTI-1,001,退房日期:7/7/7

    如果此输出不是您想要的,请添加更多信息。

    【讨论】:

      【解决方案4】:
      System.out.println("Find name");
              String str = s.nextLine();
              List<Integer> result = new ArrayList<Integer>();
              for (int i = 0; i < surname.size(); i++) {
                  if(surname.get(i).equals(str)){
                      result.add(i);
                  }
              }
              for (Integer integer : result) {
                  System.out.println(integer);
              }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-05-21
        • 1970-01-01
        • 2020-07-18
        • 2014-03-16
        • 1970-01-01
        • 1970-01-01
        • 2014-06-10
        • 1970-01-01
        相关资源
        最近更新 更多