我如何比较字符串和字符类型?

时间:2014-11-30 04:32:37

标签: java

    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方法,但它仍无法正常工作。

4 个答案:

答案 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') {
    // ...
}