无法比较Char / String?

时间:2014-01-19 13:59:16

标签: java string char

我想要做的只是读取输入(Char / String,最好是char),它是一个char,然后根据输入打印一些输出。我遇到的问题是,如果我将输入'choice'转换为char,我的错误信息是:

类型不匹配:无法从String转换为char 不兼容的操作数类型char和String

任何想法都错了吗?谢谢!

*如果我这样离开它只会给我“无效选择”

import java.util.*;

public class P1 {

    public static void main(String[] args) {

        // Create a scanner
        Scanner userInputScanner = new Scanner(System.in);
        String choice = userInputScanner.nextLine();

        System.out.println("Your choice is " + choice);

        if ((choice == "A") || (choice == "a"))
            System.out.println( " Action Movie Fan"); 
             else if ((choice == "C") || (choice == "c")) 
                 System.out.println( " Comedy movie fan ");
            else if ((choice == "D") || (choice == "d")) 
                 System.out.println(" Drama movie fan "); 
             else 
                 System.out.println( "Invalid choice" );


    }

}

4 个答案:

答案 0 :(得分:2)

使用equals比较Java中的字符串:

if ("A".equals(choice) || "a".equals(choice)) {
    ...
}

equalsIgnoreCase

if ("A".equalsIgnoreCase(choice)) { // "a".equalsIgnoreCase(choice) works too
    ...
}

但是,在你的情况下,你需要比较一个字符,所以你可以这样做:

if (choice.length() == 1) {
    // Convert to upper case for case insensitivity
    char selection = Character.toUpperCase(choice.charAt(0));
    switch (selection) {
    case 'A':
        ...
        break;
    case 'C':
        ...
        break;
    case 'D':
        ...
        break;
    }
    ...
}

答案 1 :(得分:0)

对于您的情况,请尝试使用String.equalsIgnoreCase。 您可能也想探索Enum的用法。

答案 2 :(得分:0)

import java.util.*;

public class P1 {

    public static void main(String[] args) {

        // Create a scanner
        Scanner userInputScanner = new Scanner(System.in);
        String choice = userInputScanner.nextLine();

        System.out.println("Your choice is " + choice);

        if (choice.trim().equalsIgnorecase("A"))
            System.out.println( " Action Movie Fan"); 
        else if (choice.trim().equalsIgnorecase("B")) 
            System.out.println( " Comedy movie fan ");
        else if (choice.trim().equalsIgnorecase("D")) 
            System.out.println(" Drama movie fan "); 
        else 
            System.out.println( "Invalid choice" );

    }
}

否则只比较字符串的第一个字符choice.charAt(0) == 'A'

答案 3 :(得分:0)

你应该知道的是“A”和“a”不是字符,而是字符串。你应该做的是调用String的equals()(而不是==运算符)方法进行比较。就像那样:

if(stringOne.equalsIgnoreCase("A")) {
    //methods
}