这个想法是用户输入一个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语句中没有做任何事情。所以我在比较两个字符时遇到了困难。这里的任何帮助将非常感激。
答案 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。