2017-02-15 17 views
1

文字列に重複した推測が追加されないようにするコードに取り組んでおり、同じ文字の2つが表示されないようにしています。現在、コードは重複した文字を検出することができますが、2回目のプレス後にのみ表示します。たとえば "q"を押すと何も起こりません。 "q"をもう一度押すと、文字列がqで更新されます。最初の推測の直後にqを表示したい。重複した推測を防ぐ

コード:

public void keyPressed(KeyEvent e) { 
    keyChar = e.getKeyChar(); 
    String guessedLetters = buffer.toString(); 

     statusMsg.setText(model.guessNotification()); 

    if(guessedLetters.contains(Character.valueOf(keyChar).toString())) { 
     guessedLetters = buffer.toString(); 
    } 
    else{ 
     buffer.append(keyChar); 
    } 
} 
+1

'Set 'と 'if(!add(c)) 'を使ってみてください。このコードは[MVCE](https://stackoverflow.com/help/mcve)ではないので、より具体的なヘルプを提供するのは難しいです。例えば、 'buffer'とは何ですか? –

+0

[Legend27](http://stackoverflow.com/users/7551076/legend27)と同じ質問を投稿したときに以前に述べたように、有効な[mcve]を投稿してください。コンパイルし、テストを実行し、自分自身を修正できるコードを見てみましょう。 @BoristheSpider:彼は以前にMCVEを投稿するように求められました。 –

+0

@noobcoder:[mcve]リンクを読む前にあなたがコメントしていることを意味します。誰もコードを要求していないので、最初にリンクをお読みください。 –

答えて

0

guessedLettersは、バッファに手紙を追加した後で再割り当てされません。

は、(バッファが最初の割り当てから変更されていないので、あなたはまた、本当に、ifブロックでguessedLettersを再割り当てする必要はありません。しかし、これはあなたの問題の原因ではありません。)

(また、他の人が指摘しているように、コレクションはStringBufferよりも優れたアプローチになりますが、コレクションの内容を表示用の文字列に変換する必要がありますが、それでも覚えておく必要があります。コレクションに要素を追加した後)

0

基本的には、ユーザーが作る可能性のあるすべての有効な推測のSetを開始したいです。次に、推測の後、セットに推測が含まれていること(つまり、有効であること)を確認し、その推測をセットから削除します。

+1

または、反対のことをすることができます - 'Set'に推測を追加してください。 –

関連する問題