您好我是Java的新手,并且有一个关于在ArrayList中查找String名称的快速问题。 这是我写的代码:
import java.util.*;
public class Rubix{
public static void main(String args[]){
Scanner sc = new Scanner(System.in);
String input;
String FRS="U (R U' R')";
String RBS="y' U' (R' U R)";
String FLD="y' (R' U' R)";
ArrayList RA = new ArrayList();
RA.add(FRS);
RA.add(RBS);
RA.add(FLD);
System.out.println("Name the situation.");
input=sc.nextLine();
for(int i=0; i<RA.size(); i+=1){
if (input==RA.get(i)){
System.out.println(RA.get(i));
}
}
}
}
我要求帮助的是写if语句。我想测试以查看String的名称是否在ArrayList中。我知道我目前的错误所以请帮忙。
答案 0 :(得分:1)
您可以尝试:
If (input.equals(RA.get(i)))
同样在for语句结束时,它应该是I ++而不是I + = 1
答案 1 :(得分:1)
将项添加到列表时,您不会将变量本身添加到列表中,以便稍后通过名称引用。相反,您将该变量的值复制到列表中。
在你的情况下,在
之后RA.add(FRS);
RA 不包含文本“FRS”。它不知道“FRS”是什么。它包含的内容是FRS的值,在这种情况下,是一个值为“U(R U'R')”的字符串,存储在列表的第一个位置(索引0)。
看起来您还在尝试接受输入并将其与数组中的值列表进行匹配。但是这一行:
if (input=RA.get(i)){
有一个错误。单个“=”是赋值运算符,用于将右侧的值赋给左侧的变量。因此,在您的情况下,当代码执行此操作时,如果检查,它实际上是将RA.get(i)的值分配到输入中,覆盖输入值。分配如果成功则返回“true”,并且由于这个不会失败,所以它将永远是真的。
在比较java中的字符串时,需要使用每个String对象都有的“.equals()”方法。所以在你的情况下,你的行应该是:
if (input.equals(RA.get(i)){
答案 2 :(得分:0)
contains
方法for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
if (list.contains(inputstring)) {
// You have found a mach!
}
}
contains方法只检查列表中是否包含放入参数的字符串。您可以在array [list]对象上调用该方法。
答案 3 :(得分:0)
这就是你的代码应该是这样的:
private static Scanner sc;
public static void main(String[] args) {
sc = new Scanner(System.in);
String input;
String FRS="U (R U' R')";
String RBS="y' U' (R' U R)";
String FLD="y' (R' U' R)";
ArrayList<String> RA = new ArrayList<String>();
RA.add(FRS);
RA.add(RBS);
RA.add(FLD);
System.out.println("Name the situation.");
input=sc.nextLine();
for(int i=0; i<RA.size(); i= i+1){
if (input.equals(RA.get(i))){
System.out.println(RA.get(i));
}
}
}
答案 4 :(得分:-1)
ArrayList有一个contains方法,所以只需这样做:
if (RA.contains(input)) {
// do stuff
}