DDDD
DDDD

Reputation: 3940

Java for loop with an ArrayList

Here is the contents of my ArrayList contain

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

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

My code:

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

The thing is my variable code was String "JTI-1" Why isn't it giving me the JTI-1 output? I am trying to get it to display the value of the variable code. I want to remove the contain.get(i) if it would just give me the one I typed in.

Upvotes: 12

Views: 108522

Answers (4)

NevetsKuro
NevetsKuro

Reputation: 986

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

Upvotes: 0

Tobias
Tobias

Reputation: 4074

Your code ist correct, though I would also advise you to make use of iterators:

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

Output:

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

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

If this output is not what you want, please add more information.

Upvotes: 3

Amit Deshpande
Amit Deshpande

Reputation: 19185

The code is correct assuming List of strings. 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));
        }
    }

Upvotes: 11

Brian Agnew
Brian Agnew

Reputation: 272217

I think fundamentally the code is correct. I would check your inputs and make sure they're really what you think.

I would perhaps rewrite your loop as:

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

to make use of the object iterators (the above assumes you have an ArrayList<String>). And perhaps rename contain. It's not very clear what this is.

Upvotes: 14

Related Questions