• 締切済み

【JAVAエラー】互換性のない型、演算子が適用されませんetc

学校の課題で電卓を作っています。 dentaku.BOはabstractではなく、java.awtevent.ActionListener内の abstractメソッド actionPerformed(java.awt.event.ActionEvent) をオーバーライドしません というエラーと、 互換性のない型 検出値:java.lang.String 期待値:boolean if(fugo="+") ^ と、 演算子 - はjava.lang.String,java.lang.String に適応出来ません str= num1-num2; ^ この3種類のエラーはざくざく出てくるのですが、具体的にどう修正したらいいのか分かりません。どなたか教えてくださいm(_ _)m ソース載せようとしたら文字数オーバーしてしまいましたorz

  • Java
  • 回答数6
  • ありがとう数7

みんなの回答

  • OKwebb
  • ベストアンサー率44% (92/208)
回答No.6

#1です。 > kekka= num1+num2; > Integer.toString(kekka); //kekkaをStringに変換 > str = kekka; > 検出値:int 期待値:~String で出てきてしまって #1の補足について回答しようと思いましたが #3の方が回答していましたね。 str = kekka; ここで指定しているkekkaはint型だからString型にはいれられません。 えい、おまけだぁ。 str = Integer.toString(kekka); //kekkaをStringに変換

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.5

専門家に突っ込むのもちょっとアレかと思いつつ: C/C++ ならともかく, Java では「条件式が必要なところで比較と間違えて代入を書く」とほとんどの場合にエラーになります. だから, あんまり 1==a のように書く 必要性はありません. ただし間違っていてしかもエラーにならないときは盛大なバグのもとになるのでそれはそれで要注意です. とはいえ, この比較って「不自然」だよなぁ. む, 「演算子 - はjava.lang.String,java.lang.String に適応出来ません」ってメッセージも (本当なら) おそらく誤訳. 意味としては adopt じゃなくて apply なので, 「適応」ではなく「適用」のはずだ.

  • x_jouet_x
  • ベストアンサー率68% (162/236)
回答No.4

> if(fugo="+") の部分についてです。 他の方からのアドバイスで if(fugo.equals("+")) に修正されたようなので良いですが・・・。 if(fugo="+") というのは比較ではなく、「変数fugoに"+"を代入する」という代入演算子です。 2つのものが同じかどうか比較するための演算子は == です。 仮に変数aがint値だったとすると if(a==1) と記述しなければなりません。 些細な記述の違いですが、仕事でJavaのコーディングをしている人間でもたまに記述ミスをして、これがなかなか厄介なバグになることもあるので今後は注意して下さいね。 もし比較演算子を使うことがあれば、 if(1==a) と書くのも1つの予防策になります。 [(1=a)と書き間違えても、数値に変数は代入できないのでコンパイルエラーが発生します。]

  • salsberry
  • ベストアンサー率69% (495/711)
回答No.3

> 修正前はvoid actionPerformed(ActionEvent e)ってなってたんですが、略(?)したのがいけなかったのか・・・? パッケージ名を略してActionEventとだけ書くなら、前のほうに import java.awt.event.ActionEvent; とか import java.awt.event.*; と予め書いておく必要があります。 修正前は「ActionEventというクラスが見つからない」という意味のエラーが出ていませんでしたか? > Integer.toString(kekka); //kekkaをStringに変換 > str = kekka; 上のコードでは、toString()の返り値(= String型への変換結果)を使わずに捨ててしまっています。返り値を捨てずに変数strに代入してください。 toString()を実行しても、kekkaという変数の型がStringに変わるわけではありません。

  • salsberry
  • ベストアンサー率69% (495/711)
回答No.2

> dentaku.BOはabstractではなく、java.awtevent.ActionListener内の abstractメソッド actionPerformed(java.awt.event.ActionEvent) をオーバーライドしません dentaku.BOクラスの定義に implements ActionListener と書いてあるのだろうと思われます。 - もし必要がないのであれば、dentaku.BOクラスの定義から implements ActionListener を消してしまってください。 - ActionListenerをimplementsする必要があるのであれば、dentaku.BOクラスの中で、void actionPerformed(java.awt.event.ActionEvent)という型のメソッドを自分で定義しましょう。

ake2002
質問者

お礼

エラーがなくなりました。丁寧な指示、ありがとうございます! implements ActionListener は残したまま、void actionPerformed(java.awt.event.ActionEvent)を追加しました。修正前はvoid actionPerformed(ActionEvent e)ってなってたんですが、略(?)したのがいけなかったのか・・・?

  • OKwebb
  • ベストアンサー率44% (92/208)
回答No.1

回答じゃなくてヒントのみ。 > 検出値:java.lang.String > 期待値:boolean > if(fugo="+") 『if()の中はboolean値を期待しているのに、String値がはいってるよ。』 fugoはString型でしょうか? Stringの比較はequals()メソッドを使えばいいよ。 > str= num1-num2; 『演算子 - の結果はStringにいれられないよ。』 strはString型でしょうか? strをnum1、num2と同じ型にするか、 結果をString型に変換してからstrにいれればいいよ。

ake2002
質問者

補足

equalメソッドを使って、 if(fugo.equals("+")){ //fugoが+だった時num1とnum2を足す kekka= num1+num2; Integer.toString(kekka); //kekkaをStringに変換 str = kekka;} こんな感じにしたらfugo=+の問題は解決しました。ありがとうございますm(_ _)m ですが、その後も互換性のない型のエラーが 検出値:int 期待値:~String で出てきてしまって、toString()を使ってみたんですが、うまくいかず…。どの辺が間違っているのでしょうか? 

関連するQ&A

  • JAVA コンパイル時のエラー

    JAVAの初心者です。 javacでコンパイルする際, gui は abstract でなく、java.awt.event.KeyListener 内の abstract メソッド keyReleased(java.awt.event.KeyEvent) をオーバーライドしません。 public class gui extends JFrame implements ActionListener,KeyListener { このようなエラー文がでます。 このエラー文の意味を教えていただけないでしょうか。 よろしくお願いします。

  • イベントの宣言について

    public class J_applet extends Applet implements ActionListener ,ItemListener { と宣言したところ、 J_applet は abstract でなく、java.awt.event.ActionListener 内の abstract メソッド actionPerformed(java.awt.event.ActionEvent) をオーバーライ ドしません。 とエラーがでました。 インポート宣言はきちんとしました。 上記のような書き方はもしかして出来ないんでしょうか?

    • ベストアンサー
    • Java
  • エラーがでてしまいます・・

    Cpadで下記のプログラムを作っているのですが ry21.java:7: Try21 は abstract として宣言する必要があります。actionPerformed(java.awt.event.ActionEvent) を Try21 で定義しません。public class Try21 extends Frame implements ActionListener{ とエラーがでてしまいます。どなたがわかるかたいらっしゃいましたら、教えていただけないでしょうか? 。

  • コンパイルエラーの対応

    下記のプログラムをコンパイルしたらエラーが発生しました。 プログラム自体は本をそのまま書き写したのですが、何がいけないのでしょう。 教えてください。よろしくお願いします。 Javaのバージョンは1.3.1です import java.applet.*; import java.awt.*; import java.awt.event.*; public class sample3 extends Applet implements ActionListener { Button bt; public void init() { bt = new Button("押します!"); bt.addActionListener(this); add(bt); } public void actionperformed(ActionEvent ae) { bt.setLabel("押しました!"); } } -----------------エラー内容----------------------- sample3.java:4: sample3 は abstract として宣言する必要があります。 actionPerformed(java.awt.event.ActionEvent) を sample3 で定義しません。 public class sample3 extends Applet implements ActionListener ^

    • ベストアンサー
    • Java
  • java アプレットでエラー

    以下のサンプルソースをEclipse上で実行したら "アプレットは初期化されていません"というエラーになってしまいました。 //フレームウィンドウの表示/非表示を切り替える。 import java.applet.Applet; import java.awt.*; import java.awt.event.*; public class Sample129 extends Applet implements ActionListener { Button bt; frame fr; public void init() { bt = new Button("ウィンドウ表示"); add(bt); bt.addActionListener(this); fr = new frame("操作対象ウィンドウ"); fr.setSize(250,120); } public void actionPerformed(ActionEvent event) { //ウインドウを表示 fr.setVisible(true); } } class frame extends Frame { frame(String title) { super(title); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { //ウインドウを非表示 setVisible(false); } }); } public void paint(Graphics g) { g.drawString("閉じるボタンで非表示",65,65); } } ■エラー内容 java.lang.NoSuchMethodError: frame: method <init>(Ljava/lang/String;)V not found at Sample129.init(Sample129.java:17) at sun.applet.AppletPanel.run(Unknown Source) at java.lang.Thread.run(Unknown Source) どうすればこのエラーが解消できるのでしょうか。

  • Javaアプレットについてですが

    Javaアプレットでボタンを押したら数字が増えるものを作っているのですがどうもうまく動きません。 ソースは下の通りです。 変更しなければいけないところがあるならお願いします。 import java.applet.Applet; import java.awt.Graphics; import java.awt.Button; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; public class Sample7 extends Applet implements Runnable, ActionListener { Button bt; int num; public void init() { bt = new Button("開始"); add(bt); bt.addActionListener(this); Thread th; th = new Thread(this); th.start(); } public void actionPerformed(ActionEvent ae) { public void run() { try{ for(int i=0; i<11; i++){ num = i; repaint(); Thread.sleep(1000); } } catch(InterruptedException e){} } } public void paint(Graphics g) { String str = num + "です。"; g.drawString(str, 50, 50); } }

    • ベストアンサー
    • Java
  • javaにおいてコンパイルをすると次のようなエラーが出てきます。

    javaにおいてコンパイルをすると次のようなエラーが出てきます。 力不足で解決することができません。 どうか力を貸してください。 エラーは以下のように出てきます。 よろしくお願いします。 シンボルがみつかりません シンボル: コンストラクタ DrawPanelMouseHandler(DrawPanel) 場所 : DrawPanelMouseHandler の クラス mouseHandler = new DrawPanelMouseHandler(this); mouseHandler = new DrawPanelMouseHandler(this);import java.awt.*; import java.util.ArrayList; import javax.swing.JPanel; import javax.swing.JButton; public class DrawPanel extends JPanel { ArrayList<Shape> shapeList = new ArrayList<Shape>(); DrawPanelMouseHandler mouseHandler; public void paintComponent(Graphics g) { super.paintComponent(g); for(Shape shape: shapeList){ shape.draw(g); } } public DrawPanel(){ mouseHandler = new DrawPanelMouseHandler(this); this.addMouseListener(mouseHandler); this.addMouseMotionListener(mouseHandler); ShapeFactory circleFactory = new CircleFactory(); UIToolButton circleButton = new UIToolButton(circleFactory, this, "Circle"); this.add(circleButton); } public void addShape(Shape s) { shapeList.add(s); repaint(); } } import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; public class UIToolButton extends JButton implements ActionListener{ DrawPanelMouseHandler mouseHandler; ShapeFactory factory; public UIToolButton(ShapeFactory factory, DrawPanelMouseHandler mouseHandler, String text) { super(text); this.addActionListener(this); this.mouseHandler = mouseHandler; this.factory = factory; } public void actionPerformed (ActionEvent ae) { mouseHandler.setShapeFactory(factory); } }

  • main()メソッドが無いコード

    最近、Javaアプレット等を勉強してるのですが 今まではmain()メソッドの中に処理を書いて来たのですが、 下記の様なコードにはmain()メソッドが有りません。 import java.applet.Applet; import java.awt.Button; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; public class Sample6 extends Applet implements ActionListener { Button bt; public void init() { bt = new Button("開始"); add(bt); bt.addActionListener(this); } public void actionPerformed(ActionEvent ae) { bt.setLabel("中止"); } } これはどう言う事なんでしょうか?

    • ベストアンサー
    • Java
  • Javaのエラーなのですが

    import java.awt.*; import java.awt.event.*; class PrefFrame extends Frame { public PrefFrame(String title) { //フレームのタイトル setTitle(title); //ウィンドウを閉じる時 addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); } } public class PrefTest { public static void main(String args[]) { PrefFrame frm = new PrefFrame("都道府県マスター"); frm.setLocation(300, 200); frm.setSize(250, 350); frm.setBackground(Color.LIGHT_GRAY); frm.setVisible(true); } } と入力しました。コンパイルは出来て、CLASSファイルは作成できたのですが、実行できずにエラーException in thread "main" java.lang.NoClassDefFoundError: PrefTest/javaとなってしまいます。実行するためにはどうしたらよいのでしょうか?

  • java作成時のエラー

    javaの勉強を始めたばかりの初心者です。 教えていただけると嬉しいです。 前回の質問の内容が説明不足でしたので出し直しました。 よろしくお願いします。 (1)class Test で問題なくコンパイル出来たのですが、 その後HTMLファイルを開いても、アプレットは表示されず真っ黒な画面が出るだけでした。 何が原因なのでしょうか。宜しくお願い致します。 ------------------ import java.awt.*; import java.awt.event.*; public class Test extends Frame { public Test() { super(); setTitle("Hello"); setSize(200,100); setLayout(null); Button mybutton = new Button("OK"); mybutton.setBounds(100,100,100,25); this.add(mybutton); mybutton.addActionListener(new ClickAction()); } public static void main (String args []) { new Test(); } } class ClickAction implements ActionListener { public void actionPerformed(ActionEvent ev){ System.exit(0); } } -------------- <HTML> <BODY> <APPLET WIDTH="500" HEIGHT="500" CODE="Test.class"> </APPLET> </BODY> </HTML> -------------- (2)IntegerTextField1のコンパイルは成功したのですが、その後Anwendung1のコンパイル時に、 下記エラーが出てしまいます。どちらも同じフォルダに入っています。 何が原因なのでしょうか。。どうぞ宜しくお願い致します。 C:\java\a>javac Anwendung1.java Anwendung1.java:32: cannot find symbol symbol : class IntegerTextField1 location: class Anwendung1 IntegerTextField1 tf1 = new IntegerTextField1 (); ^ Anwendung1.java:32: cannot find symbol symbol : class IntegerTextField1 location: class Anwendung1 IntegerTextField1 tf1 = new IntegerTextField1 (); ^ 2 errors --------------- import java.io.*; import java.awt.*; import java.awt.event.*; class IntegerTextField1 extends TextField implements Serializable { public IntegerTextField1 () {

専門家に質問してみよう