みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

swing java

プログラムの読める方 java swingです。

http://www.atmarkit.co.jp/ait/articles/0502/05/news012_2.html
のURLを参考に自分なりにプログラムをアレンジしてる最中です。
配列の中の数字を「文字」に変えlongをStringに変更しました。


以下ソースです。

public class Sampie63 {

public static void main(String[] args) {
String[] bd = new String[]{
"みかん","りんご","ごりら","らっぱ"
};//配列の中の数字を「文字」に変えlongをStringに変更
for (int i=0; i<bd.length; i++){
※️︎if (bd[i] != 0){
System.out.println(bd[i]);
}
}
System.out.println("----");
String[] bd2 = bd;
for (int i=0; i<bd2.length; i++){
※if(bd2[i] != 0){
System.out.println(bd2[i]);
}
}

}

}

※マークがエラー箇所で2点です。


エラーメッセージは

Exception in thread "main" java.lang.Error: Unresolved compilation problems:
Incompatible operand types String and int
Incompatible operand types String and int

at Sampie63.main(Sampie63.java:9)

で未解決の問題があり矛盾してる箇所があるという意味だと思うのですが
お時間のある方だけで無理には結構です。
ピンポイントで大丈夫なので答えられる方が入ればお願いします。

投稿日時 - 2016-09-27 13:37:58

QNo.9234933

困ってます

質問者が選んだベストアンサー

不思議なエラーですね・・・
bd[index]の型はStringで、0の型はintです。javaにおいてこの2つの型は互換性がないと定義されていて、さらには互換性のない型のデータどうしを==演算子で比較すると(有意な意味がないのでプログラマーが間違っているに違いないと解釈され)コンパイルエラーにるはず・・・なんですが不思議なのはご質問のエラーメッセージを見るとコンパイルはできていてmainメソッドも起動されてるように見えます。その上で実行時エラーメッセージが出てますね。
上のソースのままjavacでコンパイルされたのでしょうか?その点に興味がわきますw;

補足:先の回答者の方は言語をC++(?)と勘違いされてると思います。

投稿日時 - 2016-09-29 03:18:11

お礼

恥ずかしながらプログラムに対して無知な者なのであまり専門的な事はわかりませんがeclipseでただ参考サイトをググってトレースしてるだけなんです。
javacでコンパイルはしてなくてトレースして実行してるだけなんです。
回答ありがとうございました!

投稿日時 - 2016-09-29 12:31:30

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

※️︎if (bd[i] != 0){
bd[0]にはみかんが入っていますね。
なのでみかんの終了の/0を見るにはbd[0][a]になります。
bd[i]と比べるならstrcmp(bd[i],"")を使いましょう。

投稿日時 - 2016-09-27 14:26:57