質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

1回答

1181閲覧

変数の型 引数の引き渡しについて教えて頂きたいです

退会済みユーザー

退会済みユーザー

総合スコア0

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

1クリップ

投稿2020/07/20 10:22

編集2020/07/20 12:53
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といったクラス型がデータ型として置かれるのでしょうか?
一番下にエラー内容を追記致しました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dodox86

2020/07/20 10:36

> kuruma1とdensya1の前に置かれるデータ型はStringだと思ったのですがエラーが出ます。 そのエラー内容を質問文中に追記してください。そうでないと正しい判断はできません。(※このコメント欄に追記するのは避けてください。質問として必要な情報です)
javahack

2020/07/20 10:49

>kuruma1とdensya1の前に置かれるデータ型はStringだと思った なぜそう思ったのか理由を追記してください。
退会済みユーザー

退会済みユーザー

2020/07/20 10:52

引数や変数の前に置けるデータ型はStringやintしかないと思っていたためです。 これについては完全に自分の知識不足です。
javahack

2020/07/20 11:28

エラーとコードが合っていないような… .classを全部削除、コンパイルして実行でエラーの内容が変わるか確かめてみてください。
退会済みユーザー

退会済みユーザー

2020/07/20 12:54

もう一度確認いたしました。 大きくは変わらないように思えます。
quickquip

2020/07/20 14:28

エラーとコードが合っていない にもう一票。 見ているファイルとコンパイルしているファイルが違う、など"ここに書かれていない何か"に問題があると思います。 ディレクトリ/ファイル構成をスクリーンショットで開示するとか、コンパイルをどうやっているのかとか、コード以外の情報を追記するべきでしょう。
swordone

2020/07/23 00:59

勝手にCarToyとかTrainToyをStringに書き換えていませんか? もはやそれしか原因を考えられません。
退会済みユーザー

退会済みユーザー

2020/07/23 04:49

エラー内容はStringに書き換えたものです。 私の説明不足で申し訳ございません。
退会済みユーザー

退会済みユーザー

2020/07/23 04:52

また、私が伺いたいこととして()内では(データ型 変数)の順番になると思うのですがそのデータ型部分になぜCatToyとTrainToyがくるのか教えて頂きたいです
dodox86

2020/07/23 05:37

> 私が伺いたいこととして()内では(データ型 変数)の順番になると思うのですがそのデータ型部分になぜCatToyとTrainToyがくるのか教えて頂きたいです 何が分からないのか、どうもよく分かりません。例えばShopKeeperクラスの checkPrice(CarToy kuruma1, CarToy kuruma2, TrainToy densya1) メソッドは、 仮引数の宣言でCarToyとTrainToyクラスを受け取るよう定義しているから、なのですが。 Stringもクラスなので、扱いは同じです。メソッドの引数ではクラスを指定できないと思い込んでいませんか。
quickquip

2020/07/24 00:23

いま エラーがでないコード エラーメッセージ という他人が読んでもわからない質問の構造になっているので エラーがでないコード一式 修正してエラーが出るようになった部分コード エラーメッセージ としてもらえるといいかと思います。 (ここは質問への追記・修正欄ですので、ここに情報を追加しないようにしてください。追記・修正の依頼に対しての疑問はここでもいいでしょうけれども、質問への情報の追加は質問の修正でおこなってください)
退会済みユーザー

退会済みユーザー

2020/07/24 04:55

dodox86様 >仮引数の宣言でCarToyとTrainToyクラスを受け取るよう定義しているから、なのですが。 Stringもクラスなので、扱いは同じです。メソッドの引数ではクラスを指定できないと思い込んでいませんか。 私が知りたかったのはまさにこの部分です。他の皆様、私の質問が伝わりにくく大変申し訳ございません。dodox86様の答えで一歩前進出来ました。ありがとうございます。
guest

回答1

0

なぜStringではなくCarToyやTrainToyといったクラス型がデータ型として置かれるのでしょうか?

Stringも「クラス型」の一種です。完全修飾名java.lang.Stringです。
こういう「クラス型」を置きたいがためにクラスを作っているといってもいいくらいです。

投稿2020/07/23 18:31

swordone

総合スコア20651

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問