1

私はそれらをチェックして空の最初のものを返したいいくつかのテキストビューを持っています。私はこの方法でそれを行うことができました:

public TextView CurrentPos(){

    if (!wordLetter1.getText().toString().equals("*") &&
    !wordLetter2.getText().toString().equals("*") &&
    !wordLetter3.getText().toString().equals("*") &&
    !wordLetter4.getText().toString().equals("*") &&
    !wordLetter5.getText().toString().equals("*") &&    
    !wordLetter6.getText().toString().equals("*") &&
    !wordLetter7.getText().toString().equals("*")){

        if (wordLetter1.getText().toString().equals("") &&
                wordLetter2.getText().toString().equals("") &&
                wordLetter3.getText().toString().equals("") &&
                wordLetter4.getText().toString().equals("") &&
                wordLetter5.getText().toString().equals("") &&  
                wordLetter6.getText().toString().equals("") &&
                wordLetter7.getText().toString().equals(""))
            return wordLetter1;
        else if (!wordLetter1.getText().toString().equals("") &&
                wordLetter2.getText().toString().equals("") &&
                wordLetter3.getText().toString().equals("") &&
                wordLetter4.getText().toString().equals("") &&
                wordLetter5.getText().toString().equals("") &&  
                wordLetter6.getText().toString().equals("") &&
                wordLetter7.getText().toString().equals(""))
            return wordLetter2;
        else if (!wordLetter1.getText().toString().equals("") &&
                !wordLetter2.getText().toString().equals("") &&
                wordLetter3.getText().toString().equals("") &&
                wordLetter4.getText().toString().equals("") &&
                wordLetter5.getText().toString().equals("") &&  
                wordLetter6.getText().toString().equals("") &&
                wordLetter7.getText().toString().equals(""))
            return wordLetter3;
        else if (!wordLetter1.getText().toString().equals("") &&
                !wordLetter2.getText().toString().equals("") &&
                !wordLetter3.getText().toString().equals("") &&
                wordLetter4.getText().toString().equals("") &&
                wordLetter5.getText().toString().equals("") &&  
                wordLetter6.getText().toString().equals("") &&
                wordLetter7.getText().toString().equals(""))
            return wordLetter4;
        else if (!wordLetter1.getText().toString().equals("") &&
                !wordLetter2.getText().toString().equals("") &&
                !wordLetter3.getText().toString().equals("") &&
                !wordLetter4.getText().toString().equals("") &&
                wordLetter5.getText().toString().equals("") &&  
                wordLetter6.getText().toString().equals("") &&
                wordLetter7.getText().toString().equals(""))
            return wordLetter5;
        else if (!wordLetter1.getText().toString().equals("") &&
                !wordLetter2.getText().toString().equals("") &&
                !wordLetter3.getText().toString().equals("") &&
                !wordLetter4.getText().toString().equals("") &&
                !wordLetter5.getText().toString().equals("") && 
                wordLetter6.getText().toString().equals("") &&
                wordLetter7.getText().toString().equals(""))
            return wordLetter6;
        else if (!wordLetter1.getText().toString().equals("") &&
                !wordLetter2.getText().toString().equals("") &&
                !wordLetter3.getText().toString().equals("") &&
                !wordLetter4.getText().toString().equals("") &&
                !wordLetter5.getText().toString().equals("") && 
                !wordLetter6.getText().toString().equals("") &&
                wordLetter7.getText().toString().equals(""))
            return wordLetter7;

    }   
    return null;
}

上記は問題なく動作しますが、より少ないコード行で同じことを達成するには、より互換性のある方法である必要があると思います。私はJavaの経験があまりなく、完全に理解できない同様の状況に対するいくつかの回答を見つけました。上記のコードで CurrentPos() メソッドのコードを再利用しようとしました:

public TextView CurrentPos(){

    TextView wordletters[] = {wordLetter1, wordLetter2, wordLetter3,
            wordLetter4, wordLetter5, wordLetter6, wordLetter7};

    TextView currentPos = null;
    for(int i=0; i<wordletters.length; i++){
    if(!wordletters[i].toString().equals(("*")) && wordletters[i].equals("")){      
        currentPos = wordletters[i];
        return currentPos;
        }

        }   
    return null;
}

エラーNulPointerExceptionが発生します。明らかに、私は何か間違ったことをしていますが、それはわかりません。私のコードは完全に間違っていますか、それとも何か不足していますか?

4

1 に答える 1

1

getText2 番目の方法では、TextView のテキストを比較するためのメソッドを呼び出す必要があります。現在、Array から TextView インスタンスを次のように比較しようとしているためです。

for(int i=0; i<wordletters.length; i++){
    if(!wordletters[i].getText().toString().equals(("*")) && 
                       wordletters[i].getText().toString().equals("")){      
        currentPos = wordletters[i];
        return currentPos;
    }

}  
于 2013-03-28T12:39:49.383 に答える