我正在尝试使用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);
}
答案 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))