我想要做的只是读取输入(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" );
}
}
答案 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
}