簡體   English   中英

Java將單個字符與字符數組進行比較

[英]Java Compare single char to char array

我需要將單個char與char數組進行比較,看看array是否具有該char。

我當前的代碼如下所示:

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編寫小型Hangman游戲。
我的程序讀取了文本文件,並隨機選擇了玩家必須猜測的單詞,然后以隱藏方式將其打印出來,如下所示:_ _ _ _ _
在這種情況下,我希望玩家輸入字符或字符串(人們可以猜測整個單詞或僅一個字母)
然后,我希望我的程序采用該字母或字符串並與隱藏的單詞進行比較

以下代碼選擇單詞並將其隱藏:

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

我想檢查我的代碼返回什么(對或錯),但是我一直失敗。 (現在,我正在嘗試在主類中調用method進行檢查,如果可以給我提示如何做的話,否則請告訴我。)

我將使用: Chars.contains(array, chr); 番石榴糖

之所以發生NullPointerException,是因為調用該方法時chaArraychrnull 如果不是,則NullPointerException發生在其他地方!

您的代碼的另一個問題是這一行:

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

由於chr實際上是一個String,因此這里將發生的是chaArray[i]的值將自動裝箱為Character對象,然后作為參數傳遞給String.equals(Object) 但是,除非String.equals(Object)的參數為String否則它將返回false ,因此您的代碼將始終找不到該字符。

您需要像這樣比較字符:

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

或將chr聲明為char並將其比較為:

  if (chr == chaArray[i]) {

讓我們看看我是否滿足您的需求:

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

String chr可能為null,從而導致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;
}

從傳入的參數中選擇字符,或傳入一個字符,例如

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM