当我为switch语句编写代码时,我声明这是为了接收输入以及新的Array类,
ArrayList list = new ArrayList();
Scanner s = new Scanner(System.in);
printCommands();
while(s.hasNext())
{
String command = s.next();
char ch = command.charAt(0);
但是当我在while循环中时,对于大小写“a”(向数组添加整数),这一行不同意,因为ch
被声明为char
而eclipse建议将其切换为字符串,但它仍然会导致错误。
switch(command)
{
case "c":
list.clear();
return;
case "a":
ch = s.next(); //s.next() gets the error due to ch?
list.add(ch);
答案 0 :(得分:4)
char
不是String
。 scan.next()
会返回String
。如果您想获得新输入并将新输入中的第一个字符用作ch
,我建议使用:
char ch = scan.next().charAt(0);
但是,因为在您的问题中,您声明要将整数添加到数组中,我建议使用
int intToAdd = scan.nextInt();
例如:这应该对你有用
ArrayList list = new ArrayList();
Scanner s = new Scanner(System.in);
while (s.hasNext()) {
String command = s.next();
char ch = command.charAt(0);
switch (command) {
case "c":
list.clear();
return;
case "a":
ch = s.next().charAt(0); // no more error
list.add(ch);
break;
case "e":
// this will print all of the array just for testing purposes
System.out.println(list.toString());
break;
}
}
答案 1 :(得分:1)
试试这个:
switch(ch) {
case 'c':
// ...
case 'a':
// ...
这是char
,而不是您正在处理的String
。注意单引号!
答案 2 :(得分:1)
Scanner#next()方法返回类型是String。这就是为什么你不能将其结果分配给char变量的原因。你已经习惯了:
String command = s.next();
您不能使用相同的方法并将其结果分配给char。
ch = s.next(); //s.next() gets the error due to ch?