编辑: 好的,抱歉没有那么明确的问题。让我们尝试其他方式: 我们有一个名字的ArayList:Peter,John,Adam
我们正在寻找String name; 如果ArrayList包含String,我们想要编写String。如果ArrayList不包含String,我们希望将String添加到ArrayList中。
如果我正在寻找" Adam",那么这个程序就不起作用,因为首先它找到名字" Peter",然后" John" ,之后才发现"亚当"。所以前两次,它认为,"亚当"不在列表中,并且这样做。
String findName;
for (i = 0; i < arrayList.size(); i++) {
if (arrayList.get(i).getValue().contains(findName)) {
System.out.println(findName);
break;
}
else
arrayList.add(findString);
}
原始问题:
我有一个String和一个Array(ArrayList)。我必须做一些事情,如果String在Array和其他东西中,如果它不在Array中。我怎么做? 我不能这样做:
String myString;
for (i = 0; i < arrayList.size(); i++) {
if (arrayList.get(i).getValue().equals(myString)) {
DO SOMETHING;
break;
}
else
DO SOMETHING ELSE;
}
因为它只会找到一次String,而其它所有其他时间它都会起作用,就像arraylist不包含String一样。
所以我这样做:
String findString = "0";
String myString;
for (i = 0; i < arrayList.size(); i++) {
if (arrayList.get(i).getValue().equals(myString)) {
DO SOMETHING;
findString = "2"; //when I find the String, I change this
break;
}
if findString == "0"; //if I have not found the String, this happens
DO SOMETHING ELSE;
}
我有这种感觉,应该不这样做。 ;)
我知道我可以使用布尔而不是这种方式,但它以其他方式相同。难道没有完全不同的方法吗?
答案 0 :(得分:1)
最干净的方法如下:声明一个返回字符串是否在数组中的方法:
public boolean arrContainsStr(String str, String[] arr) {
for (int i = 0; i < arr.length; i++) {
if (arr[i].equals(str)) {
return true;
}
}
return false;
}
然后在您的代码中使用此方法,如下所示:
String myString;
String[] myArray;
if (arrContainsStr(myString, myArray)) {
DO SOMETHING;
}else {
DO SOMETHING ELSE;
}
这适用于原始字符串数组。请注意,如果您使用ArrayList
或类似内容,则可以使用.contains(myString)
方法检查列表是否包含字符串。这里的文档:https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html#contains(java.lang.Object)
答案 1 :(得分:1)
这个问题有点奇怪,但只是想读一下你的第一句话,如果你想知道List
是否有问题。 ArrayList
包含一个对象(例如String
),您可以使用contains(Object o)
方法而不是循环。我一定是想念你的观点。在任何情况下,一个例子:
String stringToFind = "Foo";
List<String> stringList = new ArrayList<>();
stringList.add("Foo");
if (stringList.contains(stringToFind)) {
System.out.println("String found");
} else {
System.out.println("String not found");
}
输出:找到字符串。 (在这个例子中)。
答案 2 :(得分:1)
你不能使用.contains
来检查字符串是否在列表中吗?
if(arrayList.contains(myString)){
// DO SOMETHING
} else {
// DO SOMETHING ELSE
}
答案 3 :(得分:0)
如果您发现值然后中断,则可以将布尔值设置为true。 如果找不到该值,则布尔值将保持为false。 然后你做if
答案 4 :(得分:0)
它有点含糊,所以我不确定这是否是你想要的,但是如果你删除第一段代码中的中断,我想你会得到你想要的。你想要它为每次出现的字符串或只是第一次出现做SOMETHING。如果你确实需要中断,你可以在循环结束后检查i的值,所以
if(i==arrayList.size())
{
//String found
}
else
{
//String not found
}