1

単一の文字を文字配列と比較して、配列にその文字があるかどうかを確認する必要があります。

私の現在のコードは次のようになります。

public boolean isThereChar(char[] chaArray, String chr){
    boolean bool = false;
    for(int i=0; i < chaArray.length; i++)
            {
                if(chr.equals(chaArray[i])){
                    bool = true;
                }
            }
            return bool;
}

メモの編集:

混乱して本当に申し訳ありません!私はJavaの初心者です=/
基本的に私はGUIを使って小さなハングマンゲームを書いています。
私のプログラムはテキストファイルを読み取り、プレーヤーが推測する必要のある単語をランダムに選択し、次のように非表示で出力します。_ _ _ _ _
この場合、プレーヤーに文字または文字列を入力してもらいます(人は単語全体または1文字だけ)
次に、プログラムでその文字または文字列を取得して、隠された単語と比較します

次のコードは単語を選択して非表示にします。

public String pickWord(){
    String guessWord = (wordsList[new Random().nextInt(wordsList.length)]);
    return guessWord.toLowerCase();
}

//Hides picked word
public char[] setWord(){
    char[] word = new char[pickWord().length() * 2];
    for (int i = 0; i < word.length; i+=2) {
        word[i] = '_';
        word[i + 1] = ' ';
    }
    return word;
}

次に、人は次のコードでプログラムするために彼が推測する彼のキャラクターを入力します:

public void actionPerformed(ActionEvent e) {
    String action = e.getActionCommand();

    if (action == "Guess Letter"){
        inputChar = JOptionPane.showInputDialog("Please enter letter (a-z)");
        if (inputChar.length() > 1){
            GuessedLetters glr = new GuessedLetters(inputChar);
            glr.setInString(inputChar);
            //For testing purposes
            System.out.println("This is String: " +glr.getInString());              
        }else{
        GuessedLetters glr = new GuessedLetters(inputChar);
        glr.setInChar(inputChar);
        //For testing purposes
        System.out.println("This is Char: " +glr.getInChar());
        }
    }

最後に、入力されたその文字を取得して、私の隠された単語である文字の配列と比較したいと思います。

public boolean isThereChar(char[] array, String str){
    return isThereChar(array, str.charAt(0));
}

public boolean isThereChar(char[] array, char c){
    for(int i=0; i<array.length; i++){
        if (array[i] == c) return true;
    }
    return false;
}

コードが何を返すか(trueまたはfalse)を確認したいのですが、失敗し続けます。(現在、メインクラスのメソッドを呼び出してチェックしようとしています。それ以外の方法のヒントを教えていただければ、お知らせください。)

4

6 に答える 6

5

私は使用Chars.contains(array, chr);します: Guava Chars

于 2012-08-12T09:20:20.603 に答える
3

NullPointerException が発生しているのは、メソッドを呼び出すときにまたは のいずれchaArraychrであるためです。null(そうでない場合は、別の場所で NullPointerException が発生しています!! )

コードの他の問題は次の行です。

  if (chr.equals(chaArray[i])) {

は実際には文字列であるためchr、ここで起こることは、 の値がオブジェクトchaArray[i]として自動ボックス化さCharacterれ、引数として に渡されることString.equals(Object)です。しかし、引数が ... でない限り、String.equals(Object)は返されます。そのため、コードはとにかく文字を見つけられません。falseString

次のように文字を比較する必要があります。

  if (chr.charAt(0) == chaArray[i]) {

chrまたはa であると宣言し、次のようcharに比較します。

  if (chr == chaArray[i]) {
于 2012-08-12T09:17:27.747 に答える
1

必要なものが揃っているか見てみましょう :

public void actionPerformed(ActionEvent e) {
    String action = e.getActionCommand();
    if (action == "Guess Letter"){
        inputChar = JOptionPane.showInputDialog("Please enter letter (a-z)");
        if (inputChar.length() > 1){ //User input is a string here, right?
            GuessedLetters glr = new GuessedLetters(inputChar);
            glr.setInString(inputChar);
            System.out.println(wordToGuess.contains(glr.getInString())); //This will print true if wordToGuess is equal to glr.getInString() or if it just contains it
            //For testing purposes
            System.out.println("This is String: " +glr.getInString());              
        }else{ //Here the user gave us just a character, so we've got to know if this character is contained in the word, right?
        GuessedLetters glr = new GuessedLetters(inputChar);
        glr.setInChar(inputChar);
        System.out.println(wordToGuess.contains(glr.getInChar()); //This will print true if your char is in the wordToGuess string
        //For testing purposes
        System.out.println("This is Char: " +glr.getInChar());
        }
    }
}
于 2012-08-12T09:13:51.790 に答える
0
public boolean  isThereChar(char[] chaArray, char chr){        
for(int i=0; i < chaArray.length; i++)
        {
            if((chaArray[i]==chr)){
                return true;   // means Character exist in the Character array
            }
        }
        return false;  //// means Character does not exist in the Character array
}
于 2012-08-12T09:22:30.337 に答える
0

String chrnull の可能性がありますNullPointerException

char chrの代わりに使用しStringます。

public boolean isThereChar(char[] chaArray, char chr){
    boolean bool = false;
    for(int i=0; i < chaArray.length; i++) {
        if(chr==chaArray[i])){
             bool = true;
        }
    }
    return bool;
}
于 2012-08-12T09:10:53.400 に答える
0

渡されたパラメーターから文字を選択するか、文字を渡します。

chr[0]

また

public String isThereChar(char[] chaArray, char chr){
    for(int i=0; i < chaArray.length; i++)
            {
                if(chr.equals(chaArray[i])){
                    return chr;
                }
            }
            return "Guess Again";
}
于 2012-08-12T09:12:45.763 に答える