0

我正在尝试使用 indexOf 方法来查找 char 是否在一个单词中,但由于无法取消引用 char,我认为它应该转换为 String 我尝试使用这些方法,但它似乎没有准确比较 - 应该如何我在“indexOF”中使用了一个引用的字符。这是我的代码,如果这是我的代码逻辑的愚蠢问题,那么我道歉

  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);
    }
4

2 回答 2

3

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

word.toUpperCase().indexOf(guess)

这里没有取消引用问题,因为有一个indexOf(int)函数。

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

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

虽然我并不是说它比 更好String.valueOf,但我只是使用它,因为它打字更少。

于 2013-08-04T14:46:33.270 回答
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))
于 2013-08-04T14:51:59.107 回答