Java比较2个字符并将其添加到ArrayList
其思想是用户输入一个字符。然后将该字符与字符的ArrayList匹配,如果该字符已经在那里,那么它将返回一个print语句,但是如果它不在那里,那么它将被添加到ArrayList中。以下是我的代码:Java比较2个字符并将其添加到ArrayList,java,arraylist,char,Java,Arraylist,Char,其思想是用户输入一个字符。然后将该字符与字符的ArrayList匹配,如果该字符已经在那里,那么它将返回一个print语句,但是如果它不在那里,那么它将被添加到ArrayList中。以下是我的代码: System.out.println("Enter Your guess: "); char c1 = input.next().charAt(0); for(Character c: charact
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语句中没有做任何事情。所以我很难比较这两个字符。非常感谢您的帮助。请使用
String temp = Character.toString(c);
String temp1 = Character.toString(c1);
if(temp.equals(temp1)){
}
也许试试
if (characters.contains(c)) {
// cannot add...
} else {
// can add.
}
顺便说一句,如果字符是一个集合,那么它将只存储唯一的值。尝试以下操作:
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());
}
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);
}
publicstaticvoidmain(字符串[]args){
ArrayList=新的ArrayList(0);
列表。添加('a');
列表。添加('b');
列表。添加('c');
列表。添加('d');
列表。添加('e');
字符c='e';
如果(列表包含(c)){
System.out.println(c+“已在列表中”);
}否则{
增加(c)项;
}
System.out.println(list.toString());
}
您将有一个运行此代码的ConcurrentModificationException
,因为您试图在迭代列表时修改它
即使这个错误不是问题,您的方法也不会起作用,因为您只检查第一个字符是否等于您输入的字符
执行任务的最佳方法是使用集合
,因为它不允许重复的元素
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);
}
因为add
返回false,如果元素已经存在于集合中,则该集合保持更改状态。请尝试以下操作:
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());
}
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);
}
你为什么要这么做?在
Character
classHmm中有一个非常好的equals
方法,它产生了“不能对原语类型char调用toString()”@rajc.equals(c1)
有什么问题?这很好。无法对原语类型char调用equals(char)@ZouZou@raj不,这是不可能的,因为c
是字符
,所以c1
被装箱到字符
。尝试字符c='d';字符c1='d';系统输出println(c等于(c1))代码>