在 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 不是 Stringscan.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;
    }
}