2013-08-04 19 views
0

我想使用indexOf方法來查找是否一個字符中的字符,但由於字符不能解除引用,我認爲它應該轉換爲字符串我試圖使用這些Methods但它似乎並沒有準確比較 - 我應該如何在'indexOF'中使用引用的字符。這裏是我的代碼,如果這是一個愚蠢的問題,我的代碼邏輯的話,我道歉我如何使用IndexOf與引用的字符java

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

回答

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)) 
+0

if(word.toUpperCase()。contains(String.valueOf(guess).toUpperCase)) - 這似乎實際上對我更好,因爲我感謝很多 – nmu

3

我認爲你正在使用indexOf周圍走錯了路。假設你在尋找的guessword指數(周圍的其他方法並沒有真正意義),它應該是:

word.toUpperCase().indexOf(guess) 

無解引用的問題在這裏,因爲有一個indexOf(int)功能。

contains可能會做出稍微更可讀的代碼,不幸的是它需要一個CharSequence參數(的String超類),所以你需要guess轉換爲String在這種情況下。的方式,我通常轉換原語String這樣的:

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

雖然我並不是說這比String.valueOf好,我只是用它,因爲它減少了擊鍵次數。

+0

是完美非常感謝: ) – nmu

相關問題