如何在ArrayList中搜索String的变量名

时间:2016-01-05 02:40:56

标签: java arraylist

您好我是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中。我知道我目前的错误所以请帮忙。

5 个答案:

答案 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)

1。循环2.使用contains方法

比较arraylist
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
}