如何将IndexOf与引用的char java一起使用

时间:2013-08-04 14:43:40

标签: java char indexof

我正在尝试使用indexOf方法来查找char是否在单词中,但由于char无法解除引用,我认为它应该转换为String我尝试使用这些Methods但它似乎不准确比较 - 我应该如何在'indexOF'中使用引用的char。这是我的代码,如果这是我的代码逻辑的愚蠢问题,那么我道歉

  guess = JOptionPane.showInputDialog("Enter letter ").toUpperCase().charAt(0);

    if((String.valueOf(guess)).indexOf(word.toUpperCase())>=0)
    {
        for(int k = 0; k<word.length(); k++)
        {
            if(guess==charwo[k])
            {
                charda[k]=charwo[k];                 
            }           
        }
    }
    else
    {
        guesses = guesses-1;
        System.out.println("guesses left "+guesses);
    }

2 个答案:

答案 0 :(得分:3)

我认为你正在以错误的方式使用indexOf。假设您在guess中寻找word的索引(反过来说没有意义),它应该是:

word.toUpperCase().indexOf(guess)

此处没有解除引用问题,因为有indexOf(int)函数。

contains可能会使代码更易读,不幸的是它需要CharSequence个参数(超级类String),因此您需要将guess转换为在这种情况下String。我通常将原语转换为String的方式如下:

word.toUpperCase().contains(""+guess)

虽然我并不是说它比String.valueOf更好,但我只是使用它,因为它输入的次数较少。

答案 1 :(得分:1)

如果我没有弄错的话,我认为这条线是倒退的:

if((String.valueOf(guess)).indexOf(word.toUpperCase())>=0)

应该是

if(word.toUpperCase().indexOf(String.valueOf(guess).toUpperCase) >=0)

你也可以

if(word.toUpperCase().contains(String.valueOf(guess).toUpperCase))