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

How can i use IndexOf with a referenced char java

我正试图使用indexof方法来查找char是否在单词中,但是由于char不能被取消引用,我假定它应该转换为字符串,我尝试使用这些方法,但它似乎没有进行准确的比较-我应该如何使用indexof中的引用char。这是我的代码,如果这是我的代码逻辑的一个愚蠢的问题,那么我道歉

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
  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);
    }


我认为你使用indexOf的方式是错误的。假设您在word中查找guess的索引(另一种方法并不真正有意义),它应该是:

1
word.toUpperCase().indexOf(guess)

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

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

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

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


如果我没弄错的话,我想这句话是倒转的:

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

应该是

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

你也可以

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