• ベストアンサー

Java プログラミング エラー

public class kadai1 { public static void main(String[] arg){ /* Book クラスからインスタンスを生成*/ Book myBook = new Book("The Java Tutorial",55); System.out.println("My book title = " + myBook.getTitle()); System.out.println("My book title = " + myBook.title); System.out.println("My book price = " + myBook.getPrice()); System.out.println("My book price = " + myBook.getYenPrice()); /*Book クラスからインスタンスを生成*/ Book yourBook = new Book("The Java Programming Language",40); System.out.println("Your book title = " + yourBook.getTitle()); System.out.println("Your book price = " + yourBook.getPrice()); } } class Book{ //クラスbook の宣言 String title; //題名 private int price; // 価格(ドル) Book(String t, int p){ //コンストラクタ title = t; //題名の設定 price = p; //価格の設定 } public String getTitle(){ // 題名の取得 return title; } public int getPrice(){ // 価格の取得 return price; } public double getYenPrice(){ return price*111.58; } } このとき「Exception in thread "main" java.lang.NoSuchMethodError: Book.getYenPrice()D」 というエラーがでるんですが、これはgetYenPrice()というメソッドはないといってきてるんでしょうか? 作ってるんですがどういうことなんでしょう。

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

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

・パッケージエクスプローラでJRE以外のjarファイルがないか確認する (同じクラスがjarとして含まれている可能性を考慮) ・Windowsのエクスプローラを使ってBookクラスを全て削除 (念のため) ・実行/デバックの構成を開きクラスパス、ソースの内容を確認 上記3つで駄目でしたら ・Bookクラス名をBookaaaaaaクラスとか絶対ありえないクラス名に変更しみる

tomato1414
質問者

お礼

アドバイスありがとうございます。 新しいバージョンのやつを入れ直してみたらうまくいきました!

その他の回答 (6)

回答No.6

フツーにコピペして動きましたよ? 結果 My book title = The Java Tutorial My book title = The Java Tutorial My book price = 55 My book price = 6136.9 Your book title = The Java Programming Language Your book price = 40 私の環境 Eclipse Platform Version: 3.4.1 Build id: M20080911-1700 Compiler compliance level:1.6

tomato1414
質問者

補足

なんででしょうね。。 意味がわかりませんね。

  • fortranxp
  • ベストアンサー率26% (181/684)
回答No.5

>「Exception in thread "main" java.lang.NoSuchMethodError: Book.getYenPrice()D」 Book.getYenPrice()DというMethodはありませんでは? "D"が余分みたいです。

  • fortranxp
  • ベストアンサー率26% (181/684)
回答No.4

>「Exception in thread "main" java.lang.NoSuchMethodError: >Book.getYenPrice()D」 Book.getYenPrice()DというMethodはありませんでは? "D"が余分みたいです。

tomato1414
質問者

補足

"D"はついてないんですが、エラー表示ではついてるんですよね。。 そう思って確認してたんですが。 あとnetbeansでもうまくコンパイルできませんでした。 何かもっといい環境ソフトはないんでしょうか?

  • e00083
  • ベストアンサー率31% (25/80)
回答No.3

たぶん、x_jouet_xさんの言いたいのは、今、tomato1414さんが上で作っているプログラムのクラスファイルが更新されていないといいたいんだとおもうのですが。 この場合は一度、クラスファイルを削除してコンパイルするとうまくいく場合がありますよ。 原因はわかりませんが。 Eclipseは、あまり使わないのでわかりません。

tomato1414
質問者

補足

一度消去してもう一度作るということですかね? それはやったんですが、だめでした。

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

もしEclipse等の開発環境を使用されているなら、classファイルが最新のものに更新されていない可能性があります。 [Eclipseの場合] ツールバーの "Project" - "Clean" を行ってから再度ビルドしてみて下さい。

tomato1414
質問者

補足

Eclipse使ってます! 最新のものに更新されてないというのはどういうことですか? バージョンが古いってことですか? cleanしてみましたがだめでしたね・・

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

> getYenPrice()というメソッドはないといってきてるんでしょうか? そういう認識でいいと思います。 getYenPrice()は後から追加してませんか? ・クラスパスの確認 ・Bookクラスが最新になっているかの確認

tomato1414
質問者

補足

はい、メソッドgetYenPrice()が作られてない別のクラスファイルから丸ごとコピーしてきて追加しました。 それはだめなんでしょうか? 確認方法がいまいちわかりません。

関連するQ&A