2016-08-27 9 views
-1

この単純なコードの作成がほとんど終了しましたが、入力ダイアログボックスをJOptionPaneから変数に変更するとエラーが発生します。Javaエラー、互換性のないタイプ:オブジェクトを文字列に変換できません

例えば

name = JOptionPane.showInputDialog(null, "What is your name?", 
        "Question", 
        JOptionPane.QUESTION_MESSAGE, 
        iconhello, 
        null, 
        ""); 

名前が前にある場合は、エラーがないことはないと私のコードがスムーズに実行したとき、私は、エラーを取得するが、私はメッセージに入力を返す必要があります私のコードで後で作成するダイアログ。

これは完全なコードです:

public static void main(String[] args) { 
    String name, choice, choice2, choice3, order; 
    ImageIcon iconhello;//identifying the new icon created 
    iconhello = new ImageIcon("hello.gif"); 

    ImageIcon iconcat1; 
    iconcat1 = new ImageIcon("cat1.gif"); 

    ImageIcon iconcat7; 
    iconcat7 = new ImageIcon("cat7.gif"); 

    ImageIcon icondrink; 
    icondrink = new ImageIcon("drink.gif"); 

    ImageIcon iconpizza; 
    iconpizza = new ImageIcon("pizza.gif"); 

      name = JOptionPane.showInputDialog(null, "What is your name?", 
        "Question", 
        JOptionPane.QUESTION_MESSAGE, 
        iconhello, 
        null, 
        ""); 

    Object[] possibilities= {"Chicken Sub", "Chicken Teriyaki Sub", "Tuna " 
      + "Sub", "Vegetable Sub"};//creating options for user to choose from 

    choice= (String)JOptionPane.showInputDialog(null, "What type of" 
      + " subsandwich do you like? \n \"I like...\"", 
    "Subsandwich", 
    JOptionPane.QUESTION_MESSAGE, 
    iconpizza, 
    possibilities, 
    "Chicken Sub"); 

    Object[] possibilities1= {"Sprite", "Coke", "7Up", "Pepsi"}; 

    choice2= (String)JOptionPane.showInputDialog(null, "What type of" 
    + " drink do you prefer to have? \n \"I prefer..\"", 
    "Drink", 
    JOptionPane.QUESTION_MESSAGE, 
    icondrink, 
    possibilities1, 
    "Sprite"); 

    JOptionPane.showInputDialog(null, "Please state what you would like" 
      + " to have additionally", 
      "Additional Request", 
      JOptionPane.INFORMATION_MESSAGE, 
      iconcat1, 
      null, 
      ""); 

    order= String.format("Your order: \n " + choice + " \n" + choice2 + 
      " \n Please enjoy!", 
      "Order for: " + name + " " , 
      JOptionPane.PLAIN_MESSAGE, 
      iconcat7, 
      null); 
    JOptionPane.showMessageDialog(null, order); 


} 

してください、あなたができるなら、私を助けて。

+0

すべての文字列はオブジェクトであり、すべてのオブジェクトが文字列ではないため、問題があります。あなたはそれをキャストしようとする前に、コンパイラが文字列であることを知っている(そして何か他のものであってはならない)ようにコードを書く必要があります。 – Stultuske

答えて

3

呼び出すshowInputDialogメソッドはObjectを返しますが、返された値はStringという変数に割り当てられます。エラーメッセージは、Javaが暗黙的にこの変換を行わないことを示しています。明示的に行う必要があります。コード内で数行後に正しいことが分かりました。

choice = (String)JOptionPane.showInputDialog(null, "What type of" 
      + " subsandwich do you like? \n \"I like...\"", 
    "Subsandwich", 
    JOptionPane.QUESTION_MESSAGE, 
    iconpizza, 
    possibilities, 
    "Chicken Sub"); 
+0

ありがとう! :)エラーは削除されました。しかし、メッセージボックスのフォーマットの最後のコードセットは、タイトルと共にメッセージボックスに表示されていません。私はそのフォーマットが使用されているかどうかはわかりません。あなたの注文:\ n "+選択+" \ n "+ choice2 + " \ nお楽しみください! "、 "注文のための: "+ 「+ name」「 JOptionPane.showMessageDialog(null、order); –

関連する問題