System.out.print("Enter C for Celsius or F for Farenheit: ");
String optionLetter = kb.readLine();
if (optionLetter == 'c')
{
System.out.print("Enter temperature: ");
double tempC = Integer.parseInt(kb.readLine());
double degreesF = (9 * (tempC/5) +32);
System.out.println(tempC + " celcius is " + degreesF + " in farenheit.");
}
}
因此用户只能输入一个字符C或c ....所以基本上在readLine中,它无法读取字符数据类型...所以我强制在字符串中声明它但是当我在一个字符串中使用它时if语句中的条件我在编译时遇到错误,字符串和char是不兼容的类型... 我知道它不兼容但我该怎么办?我不能将变量optionLetter声明为字符,我只需要检查用户是否输入c ????
我该怎么检查...... ??
我尝试了.equals方法,但它仍无法正常工作。
答案 0 :(得分:4)
您可以尝试获取字符串的第一个字符:
if (optionLetter.charAt(0) == 'c')
或者你可以将它与字符串" c"进行比较。而不是角色' c'。
if (optionLetter.equals("c"))
你甚至可以使它不区分大小写:
if (optionLetter.equalsIgnoreCase("c"))
双引号("
)表示String
个对象,而单引号('
)表示char
个原语。 String
类有一个方法equals
,可以将它与其他对象进行比较。要比较字符,您只需使用==
。
答案 1 :(得分:2)
您想要比较字符串中的第一个字符。它应该只有一个字符,即使你不能将整个字符串与一个字符进行比较。
您的代码将是:
if(optionLetter.charAt(0) == 'c')
{
//do stuff here
}
将它与字符串c进行比较也可以起作用:
if(optionLetter.equals("c"))
{
//do stuff here
}
答案 2 :(得分:1)
在Java中使用单引号表示char
,而双引号表示String
。将c的单引号切换为双引号并尝试使用.equals()
。
答案 3 :(得分:1)
我建议您使用
之类的字符串不区分大小写if (optionLetter.equalsIgnoreCase("c")) {
// ...
} else if (optionLetter.equalsIgnoreCase("f")) {
// ...
}
或者您可能更愿意检查第一个字符,如
if (Character.toLowerCase(optionLetter.charAt(0)) == 'c') {
// ...
} else if (Character.toLowerCase(optionLetter.charAt(0)) == 'f') {
// ...
}