你如何测试charAt(0)的值?

时间:2015-02-19 00:57:26

标签: java

所以我正在编写一个代码,询问用户是否希望推荐新宠物。我给他们一个消息对话框,要求他们输入Y表示是和N表示否。这是我的代码做得很远而且有一些我没有得到的。最大的问题是如何测试他们输入的值是Y还是N.他们给出的答案可以是小写或大写。我该如何编码?

public static void aPet()
{
    char answer;
    String newPet;
    newPet = JOptionPane.showInputDialog(null,"Would you like to recommend another pet?(Y), or Stop (N)","Another Recommendation?", JOptionPane.QUESTION_MESSAGE);
    answer = newPet.charAt(0);
    if (answer == y || answer == Y)
    {
        //methods to recommend pet
    }
        if (answer == n || answer == N)
        {
            System.exit(-1);
        }
}

3 个答案:

答案 0 :(得分:2)

您需要使用实际的字符文字,而不仅仅是字母:

if (answer == 'y' || answer == 'Y')

字符用代码表示,用单引号括起来(它们也可以用其他方式表示,但这是最简单的。)

您可以在The Java Tutorials>上阅读此内容。 Primitive Data Types其中说:

  

始终使用"单引号'对于字面文字和"双引号" for String literals。

答案 1 :(得分:0)

您遗漏了值'y''n'周围的单引号:

试试这个:

char answer = newPet.charAt(0);
if('y' == answer || 'Y' == answer) {
    // recommend pet
} else {
    // exit
}

OR

<强>被修改

if(newPet.matches("y|Y")) {
    // recommend pet
} else {
    // exit
}

OR

if("y".equalsIgnoreCase(newPet)) {
    // recommend pet
} else {
    // exit
}

答案 2 :(得分:0)

你可以这样使用Character#toUpperCase()

if (Character.toUpperCase(answer) == 'Y')
{
    //methods to recommend pet
}