2017-04-22 3 views
0

私はまず英語が不足していると言います。私はネイティブスピーカーではありません。JOptionPane.showOptionDialogを使用しているときにクリックしたオプションを取得する方法は?incomporable typesエラーが発生するのはなぜですか

私はJavaでGUIを備えたロックシザーペーパーゲームを作成しています。

アルゴリズムは非常に簡単です。 3つのボタンでshowOptionDialogを取得します。 (ロック、はさみ、紙)私が3つのボタンの1つをクリックすると、Javaは私の選択とコンピュータの選択を比較します。コンピュータは、私はほとんど私のGUIを終了していますが、int型私はshowOptionDialog

private String[]a = {"Rock","Paper","Scissor"}; 
private int userChoice; 
/* some codes 
*/ 
    public void actionPerformed(ActionEvent e){ 
    if(e.getSource()==play){ 
     userChoice = JOptionPane.showOptionDialog(null,"Rock Paper Scissor","Choose",JOptionPane.YES_NO_CANCEL_OPTION, 
     JOptionPane.QUESTION_MESSAGE,null,a,a[1]); 
     if(userChoice==a[0]) 
    } 
} 

といくつかの問題は、私はこのような何かを試してみましたが、あなたが知っているように、Javaは私にincomporable種類を示して1〜3

の間の乱数を選択しますとString。いいアイデアはどうすればいいですか?

+0

正確なエラーメッセージは何ですか? –

+0

@ Code-Apprentice前述のように、コンパイルする前に、Javaはincomporable typesエラーを表示します。コンパイルした後、私は今は分かりません。私は自分のコードで終わっていないので、今コンパイルできません。 – ProgramLover

+0

@ Code-Apprentice問題は私がJavaがインフォーマルなタイプを表示する理由を知っていますが、他の方法でどうすればいいのかわかりません – ProgramLover

答えて

1

ご存じのように、JOptionPane.showOptionDialog()は、Stringではなく、を返します。だからuserChoiceStringの要素の1つをaと比較することはできません。代わりに、選択肢を得るためにインデックスとしてuserChoiceを使用します。

if (userChoice != JOptionPane.CLOSED_OPTION) { 
    String choice = a[userChoice]; 
    // Do something with choice 
} 

ゲームの結果を決定するには、同じように簡単ではなくString表現よりも、直接userChoiceを使用することができます。たとえば、 "rock beats scissors"の代わりに "0 beats 1"と考えてください。

+0

答えをありがとう!私は本当に眠いので、私はコードを書くことはできませんが、後であなたのアドバイスをテストします。ありがとう – ProgramLover

関連する問題