在 Java 中,为什么 char ch 不同意 String 命令?
In Java, why does char ch disagree with String command?
当我为 switch 语句编写代码时,我将其声明为接收输入以及数组的新 class,
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);
试试这个:
switch(ch) {
case 'c':
// ...
case 'a':
// ...
您要处理的是 char
,而不是 String
。注意单引号!
Scanner#next()方法return类型是字符串。这就是为什么您不能将其结果分配给 char 变量的原因。你已经用过了:
String command = s.next();
您不能使用相同的方法并将其结果分配给一个字符。
ch = s.next(); //s.next() gets the error due to ch?
A char
不是 String
。 scan.next()
returns一个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;
}
}
当我为 switch 语句编写代码时,我将其声明为接收输入以及数组的新 class,
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);
试试这个:
switch(ch) {
case 'c':
// ...
case 'a':
// ...
您要处理的是 char
,而不是 String
。注意单引号!
Scanner#next()方法return类型是字符串。这就是为什么您不能将其结果分配给 char 变量的原因。你已经用过了:
String command = s.next();
您不能使用相同的方法并将其结果分配给一个字符。
ch = s.next(); //s.next() gets the error due to ch?
A char
不是 String
。 scan.next()
returns一个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;
}
}