在Java中,为什么char ch不同意String命令?

时间:2015-03-09 22:24:52

标签: java arrays switch-statement

当我为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);

3 个答案:

答案 0 :(得分:4)

char不是Stringscan.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?