
学校の課題で電卓を作っています。
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
A 回答 (6件)
- 最新から表示
- 回答順に表示
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に変換
No.5
- 回答日時:
専門家に突っ込むのもちょっとアレかと思いつつ:
C/C++ ならともかく, Java では「条件式が必要なところで比較と間違えて代入を書く」とほとんどの場合にエラーになります. だから, あんまり
1==a のように書く
必要性はありません. ただし間違っていてしかもエラーにならないときは盛大なバグのもとになるのでそれはそれで要注意です.
とはいえ, この比較って「不自然」だよなぁ.
む, 「演算子 - はjava.lang.String,java.lang.String に適応出来ません」ってメッセージも (本当なら) おそらく誤訳. 意味としては adopt じゃなくて apply なので, 「適応」ではなく「適用」のはずだ.
No.4
- 回答日時:
> if(fugo="+")
の部分についてです。
他の方からのアドバイスで if(fugo.equals("+")) に修正されたようなので良いですが・・・。
if(fugo="+") というのは比較ではなく、「変数fugoに"+"を代入する」という代入演算子です。
2つのものが同じかどうか比較するための演算子は == です。
仮に変数aがint値だったとすると if(a==1) と記述しなければなりません。
些細な記述の違いですが、仕事でJavaのコーディングをしている人間でもたまに記述ミスをして、これがなかなか厄介なバグになることもあるので今後は注意して下さいね。
もし比較演算子を使うことがあれば、
if(1==a)
と書くのも1つの予防策になります。
[(1=a)と書き間違えても、数値に変数は代入できないのでコンパイルエラーが発生します。]
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に変わるわけではありません。
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)という型のメソッドを自分で定義しましょう。
エラーがなくなりました。丁寧な指示、ありがとうございます!
implements ActionListener は残したまま、void actionPerformed(java.awt.event.ActionEvent)を追加しました。修正前はvoid actionPerformed(ActionEvent e)ってなってたんですが、略(?)したのがいけなかったのか・・・?
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にいれればいいよ。
この回答への補足
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が見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JTableでスクロールバーが表示...
-
どうしてもプログラムが動いて...
-
HTMLでのTableタグデータ取得方法
-
eclipseに記述したjavaファイル...
-
文字列を数式に
-
C言語のポインターに関する警告
-
IF関数でEmpty値を設定する方法。
-
ORA-01858: 数値を指定する箇所...
-
ループ処理の際、最後だけ","を...
-
System.err. printlnとSystem.o...
-
System.exit()の値を取得したい
-
動的配列が存在(要素が有る)か...
-
カタカナの小文字を大文字に変...
-
javaで質問です。 文字列2023/2...
-
1~100までの数字を表示したい
-
【C#】ハッシュテーブル(連想...
-
streamで送信されたArrayListを...
-
0dの意味を教えてください
-
VBAで配列の計算
-
[Ljava.lang.Stringってなんですか
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
eclipseに記述したjavaファイル...
-
ColabでのPytorchのエラー
-
<forEach> 内で供給された "ite...
-
「例外 *** は対応する try 文...
-
Selenium IDEでexportしたコー...
-
javaでアプレットの描画が出来ない
-
データの外挿について
-
ActionForm form にnullが入っ...
-
(急募)一覧表画面でパスワード...
-
(急募)一覧画面表示がうまくい...
-
(急募)「.csv」ファイルをテー...
-
Java での グローバルIP取得
-
シャットダウンフックが呼ばれない
-
GridBagLayoutについての質問
-
文字列を数式に
-
生年月日と今日の日付から年齢...
-
JTableでスクロールバーが表示...
-
干支の計算で。。。
-
Javaを使ってデジタル時計を作...
-
JAVA 乱数で同じ数字を出さな...
おすすめ情報