Reputation: 3940
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
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
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
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
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