class Main { public static void main(String[] args) { ShopKeeper suzuki = new ShopKeeper(); CarToy car1 = new CarToy(); CarToy car2 = new CarToy(); TrainToy train1 = new TrainToy(); suzuki.name_ = "鈴木"; car1.code_ = "c001"; car1.price_ = 500; car2.code_ = "c002"; car2.price_ = 500; train1.code_ = "t001"; train1.price_ = 700; //価格チェックの実行 suzuki.checkPrice(car1, car2, train1); //デモの実行 suzuki.doDemo(car1, car2, train1); } }
public class CarToy { String code_; //商品コード int price_; //価格 //走る public void go(){ System.out.println("ブロローッ"); } //ライトを点ける public void light(){ System.out.println("ピカーッ"); } }
public class ShopKeeper { String name_; //名前 //価格をチェックする public void checkPrice(CarToy kuruma1, CarToy kuruma2, TrainToy densya1){ System.out.println("私が店長の" + name_ + "です。これから価格をチェックします。"); System.out.println("商品コード:" + kuruma1.code_ + "の価格は" + kuruma1.price_ + "円です。"); System.out.println("商品コード:" + kuruma2.code_ + "の価格は" + kuruma2.price_ + "円です。"); System.out.println("商品コード:" + densya1.code_ + "の価格は" + densya1.price_ + "円です。"); System.out.println("\n"); } //デモする public void doDemo(CarToy kuruma1, CarToy kuruma2, TrainToy densya1){ System.out.println("私が店長の" + name_ + "です。これからデモします。"); System.out.println("クルマ1を走らせます。"); kuruma1.go(); System.out.println("クルマ2を走らせます。"); kuruma2.go(); System.out.println("電車を走らせます。"); densya1.go(); System.out.println("\n"); } }
public class TrainToy { String code_; //商品コード int price_; //価格 //走る public void go(){ System.out.println("ガタンゴトン"); } //警笛を鳴らす public void horn(){ System.out.println("プォー!"); } }
Main.java:20: error: incompatible types: CarToy cannot be converted to String suzuki.checkPrice(car1, car2, train1); ^ Main.java:23: error: incompatible types: CarToy cannot be converted to String suzuki.doDemo(car1, car2, train1); ^ ShopKeeper.java:7: error: cannot find symbol System.out.println("商品コード:" + kuruma1.code_ ^ symbol: variable code_ location: variable kuruma1 of type String ShopKeeper.java:8: error: cannot find symbol + "の価格は" + kuruma1.price_ + "円です。"); ^ symbol: variable price_ location: variable kuruma1 of type String ShopKeeper.java:9: error: cannot find symbol System.out.println("商品コード:" + kuruma2.code_ ^ symbol: variable code_ location: variable kuruma2 of type String ShopKeeper.java:10: error: cannot find symbol + "の価格は" + kuruma2.price_ + "円です。"); ^ symbol: variable price_ location: variable kuruma2 of type String ShopKeeper.java:11: error: cannot find symbol System.out.println("商品コード:" + densya1.code_ ^ symbol: variable code_ location: variable densya1 of type String ShopKeeper.java:12: error: cannot find symbol + "の価格は" + densya1.price_ + "円です。"); ^ symbol: variable price_ location: variable densya1 of type String ShopKeeper.java:20: error: cannot find symbol kuruma1.go(); ^ symbol: method go() location: variable kuruma1 of type String ShopKeeper.java:22: error: cannot find symbol kuruma2.go(); ^ symbol: method go() location: variable kuruma2 of type String ShopKeeper.java:24: error: cannot find symbol densya1.go(); ^ symbol: method go() location: variable densya1 of type String Note: Some messages have been simplified; recompile with -Xdiags:verbose to get full output
ShopKeeperクラスの中の
checkPrice(CarToy kuruma1, CarToy kuruma2, TrainToy densya1)と
doDemo(CarToy kuruma1, CarToy kuruma2, TrainToy densya1)
の部分について質問です。
kuruma1とdensya1の前に置かれるデータ型はStringだと思ったのですがエラーが出ます。
なぜStringではなくCarToyやTrainToyといったクラス型がデータ型として置かれるのでしょうか?
一番下にエラー内容を追記致しました。
> kuruma1とdensya1の前に置かれるデータ型はStringだと思ったのですがエラーが出ます。
そのエラー内容を質問文中に追記してください。そうでないと正しい判断はできません。(※このコメント欄に追記するのは避けてください。質問として必要な情報です)
>kuruma1とdensya1の前に置かれるデータ型はStringだと思った
なぜそう思ったのか理由を追記してください。
引数や変数の前に置けるデータ型はStringやintしかないと思っていたためです。
これについては完全に自分の知識不足です。
エラーとコードが合っていないような…
.classを全部削除、コンパイルして実行でエラーの内容が変わるか確かめてみてください。
もう一度確認いたしました。
大きくは変わらないように思えます。
エラーとコードが合っていない にもう一票。
見ているファイルとコンパイルしているファイルが違う、など"ここに書かれていない何か"に問題があると思います。
ディレクトリ/ファイル構成をスクリーンショットで開示するとか、コンパイルをどうやっているのかとか、コード以外の情報を追記するべきでしょう。
勝手にCarToyとかTrainToyをStringに書き換えていませんか?
もはやそれしか原因を考えられません。
エラー内容はStringに書き換えたものです。
私の説明不足で申し訳ございません。
また、私が伺いたいこととして()内では(データ型 変数)の順番になると思うのですがそのデータ型部分になぜCatToyとTrainToyがくるのか教えて頂きたいです
> 私が伺いたいこととして()内では(データ型 変数)の順番になると思うのですがそのデータ型部分になぜCatToyとTrainToyがくるのか教えて頂きたいです
何が分からないのか、どうもよく分かりません。例えばShopKeeperクラスの
checkPrice(CarToy kuruma1, CarToy kuruma2, TrainToy densya1) メソッドは、
仮引数の宣言でCarToyとTrainToyクラスを受け取るよう定義しているから、なのですが。
Stringもクラスなので、扱いは同じです。メソッドの引数ではクラスを指定できないと思い込んでいませんか。
いま
エラーがでないコード
エラーメッセージ
という他人が読んでもわからない質問の構造になっているので
エラーがでないコード一式
修正してエラーが出るようになった部分コード
エラーメッセージ
としてもらえるといいかと思います。
(ここは質問への追記・修正欄ですので、ここに情報を追加しないようにしてください。追記・修正の依頼に対しての疑問はここでもいいでしょうけれども、質問への情報の追加は質問の修正でおこなってください)
dodox86様
>仮引数の宣言でCarToyとTrainToyクラスを受け取るよう定義しているから、なのですが。
Stringもクラスなので、扱いは同じです。メソッドの引数ではクラスを指定できないと思い込んでいませんか。
私が知りたかったのはまさにこの部分です。他の皆様、私の質問が伝わりにくく大変申し訳ございません。dodox86様の答えで一歩前進出来ました。ありがとうございます。