Java比较2个字符并将它们添加到ArrayList

时间:2014-03-14 11:38:14

标签: java arraylist char

这个想法是用户输入一个char。然后将char与char的ArrayList匹配,如果char已经在那里,那么它将返回一个print语句,但是如果它不在那里,那么它将被添加到ArrayList。这是我的一些代码:

                System.out.println("Enter Your guess: ");
                char c1 = input.next().charAt(0);


                for(Character c: characters){
                    if(c.equals(c1)){
                        System.out.println("Cant do that");
                    }
                    else{
                        characters.add(c1);
                    }

我已尝试通过它进行调试,似乎发生的事情是它接受了c1的值但是它失败了并且它在if语句中没有做任何事情。所以我在比较两个字符时遇到了困难。这里的任何帮助将非常感激。

5 个答案:

答案 0 :(得分:1)

试试这个:

          ArrayList testList = new ArrayList();
              System.out.println("Enter Your guess: ");
            char c1 = input.next().charAt(0);
             testList.add(c1)
               if(false==testList.contains(c1))
                { 
                    System.out.println("Cant do that");
                }
                else
                {
                    testList.add(c1);
                }

答案 1 :(得分:0)

使用

 String temp = Character.toString(c);
 String temp1 = Character.toString(c1);
 if(temp.equals(temp1)){

 }

答案 2 :(得分:0)

也许试试

if (characters.contains(c)) {
  // cannot add...
} else {
  // can add.
}

BTW如果字符是Set,那么它只会存储唯一值。

答案 3 :(得分:0)

试试这个:

 public static void main(String[] args) {
    ArrayList<Character> list = new ArrayList<Character>(0);

    list.add('a');
    list.add('b');
    list.add('c');
    list.add('d');
    list.add('e');

    char c = 'e';

    if (list.contains(c)) {
        System.out.println(c + "already in list");
    } else {
        list.add(c);
    }

    System.out.println(list.toString());
}

答案 4 :(得分:0)

您将有ConcurrentModificationException运行此代码,因为您在迭代时尝试修改列表。

即使这个错误不是问题,你也不会工作,因为你只检查第一个字符是否等于你输入的字符。

执行任务的最佳方法是使用Set,因为它不允许重复的元素。

Set<Character> set = new HashSet<>(Arrays.asList('a','b','c'));

...

System.out.println("Enter Your guess: ");
char c1 = input.next().charAt(0);
if(set.contains(c1)){
    System.out.println("char already in the set");
} else {
  set.add(c1);
}

或者你可以简单地做

System.out.println("Enter Your guess: ");
char c1 = input.next().charAt(0);
boolean added = set.add(c1);
if(!added){
    System.out.println("char already in the set");
}

由于add返回false,并且如果该元素已经存在,则将该集保留为inchanged。