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

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

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

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

受付中

Javaの課題を解いています。コンソールに以下全てを表示させたいのですが、現状、「名前は山田 太郎です!」だけ表示される状態です。

roger_rafael
roger_rafael

総合スコア0

Java

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

4回答

0グッド

0クリップ

1240閲覧

投稿2022/10/26 05:15

編集2022/11/04 12:30

Javaの課題を解いています。
コンソールに以下全てを表示させたいのですが、現状、「名前は山田 太郎です!」だけ表示される状態です。
解決方法をご教示いただきたいです。
以下のコードはメインメソッド・ドッグメソッド・アニマルメソッドになります。

【動物と鳴き声の一覧】
動物 「鳴く」などの動詞
犬(dog) bark(吠える)
猫(cat) meow(吠える)
鳥(bird) sing (歌う感じでさえずる)
羊(sheep) bleat(メーと鳴く)
豚(pig) grunt (ブーブー鳴く)

実現したいこと

コンソールに以下を表示させたいのですが、上手くいきません。

私の名前は、山田太郎です!
これから、私のペットを紹介します!
名前は、ポチです!
2020/07/27で7歳になります!
わんわん!

発生している問題・エラーメッセージ

・ローカル変数nameの値は使用されていません。 ・ローカル変数ageの値は使用されていません。 ・メソッドbark()は型Animalで未定義です。 ・コンソールに「名前は山田 太郎です!」だけ表示される状態。

該当のソースコード

Java

【Main.java】 package animal; public class Main { public static void main(String[] args) { // 問① 下部の問④のメソッドを作成後、自身の姓名を引数にセットしなさい Main.printMyName("山田", "太郎"); // 問② 以下の変数に適切な値を格納しなさい。 String name = "ポチ"; int age = 7; } // 問2 以下の変数に適切な値を格納しなさい。 String name = "ポチ"; int age = 7; // 問③ 以下の条件で、任意の動物クラスをインスタンス化し、適切なメソッドを呼び出しなさい。 // 1: メソッドの引数には、問②で作成したローカル変数を使用すること。 static void show(String name) { System.out.println("私の名前は" + name + "です!"); } static void showAnimal(String name, int age) { System.out.println("これから、私のペットを紹介します!"); Animal animal = new Dog(name, age); animal.introduce(); animal.bark(); } // 問④ 以下1〜3の条件で、自身の名前とペットを紹介する旨の内容をコンソールへ出力する printMyName メソッドを作成しなさい。 // // - 1. アクセス修飾子 = private // - 2. 引数: // - 2-1. 姓(セイ) // - 2-2. 名(メイ) // - 3. 戻り値 = なし private static void printMyName(String firstName, String lastName) { System.out.println("名前は" + fullName(firstName, lastName) + "です!"); } private static String fullName(String firstName, String lastName) { return firstName + " " + lastName; } } 【Dog.java】 package animal; // 問⑥ 以下の条件で、任意の動物クラスを作成しなさい。 // - 1: 対象の動物は、【動物と鳴き声の一覧】を参考とすること // - 2: Animalを継承すること public class Dog extends Animal { public Dog(String name, int age) { super(name, age); } // 問⑦ 以下の条件で、当該クラスに合う動物の鳴き声をコンソールへ出力するメソッドを作成しなさい。 // - 1: 対象の動物の鳴き声は、【動物と鳴き声の一覧】を参考とすること // - 2. アクセス修飾子 = protected // - 3. 引数 = なし // - 4. 戻り値 = なし protected void bark() { System.out.println("わんわん!"); } } 【Animal.java】 package animal; import java.text.SimpleDateFormat; import java.util.Calendar; public class Animal { private String name; private int age; public Animal() { } public Animal(String name, int age) { this.name = name; this.age = age; } protected void setName(String name) { this.name = name; } protected void setAge(int age) { this.age = age; } protected String getName() { return this.name; } protected int getAge() { return this.age; } protected void introduce() { System.out.println("名前は、" + this.getName() + "です!"); } // 問⑤ 以下の条件で、Calendarクラスを使用して、yyyy/MM/dd形式で誕生日を取得しなさい // - 1: Calendarクラスの変数名 = calendar // - 2: 実行する日より「5ヶ月15日後」の日付を表示しなさい public class Main { public static void main(String[] args) throws Exception { Calendar calendar = Calendar.getInstance(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd"); System.out.println(sdf.format(calendar.getTime()) + "で" + "歳になります!"); } protected void bark() { } } }

試したこと

以上のコードを試行錯誤し作成しました。

補足情報(FW/ツールのバージョンなど)

総合開発環境はエクリプスです。

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

2022/11/03 07:10依頼された後にこの質問は修正されています

こちらの質問が複数のユーザーから「やってほしいことだけを記載した丸投げの質問」という指摘を受けました。

pig_vba

2022/10/26 05:22

「引数四つあるけど2つしか渡されてないよ」って言われてます。ペットの名前と年齢を引数で渡す必要があるか、問題文をもう一度見返してみましょう。
m.ts10806

2022/10/26 05:40 編集

タイトルが長いわりに要件がないと思います。 別問題であれば別質問にしても良いですが、要件のみ端的に記載してください。 ※あと質問は最大1万字投稿できたはずなので、本当に分ける必要があるのかは重々検討いただきたく。  質問は編集できます。 >試行錯誤し作成しました。 ふとした疑問ですが、起きた問題に対しては試行錯誤しなかったのでしょうか。 「試したこと」はあくまで「起きている問題」に対して「取り組んだこと、調べたこと」を書く場所であって、 「ここまで頑張ったよ!」って書く場所ではないです。
BeatStar

2022/10/26 05:57 編集

それぞれの問題(出題)というのは、コメントとして書かれているもので、 問4の引数は「姓」と「名」だけですよね? それなら『String petName, int petAge』とか要らないと思いますよ? 問4とかのでの定義が仕様と同等なので、その仕様に従っていないとダメです。 つまり『余計なものを付け加えてもいけないし、必要なものを勝手に排除するのもダメ』ってことです。 それなのに仕様にはないペットの名前だのペットの年齢だのをつけるのはダメですよ。 (あ、すでに言われていた…)
roger_rafael

2022/10/26 06:31

ありがとうございます。 ご指摘通り引数を2つ減らし、 メインメソッド・ドッグメソッド・アニマルメソッドのコードをこちらの質問にまとめました。
m.ts10806

2022/10/26 06:48

では他の質問を削除リクエストだしておいてください。 また、デバッグ方法については学習していますか? おそらくデバッグできれば自身で解決できる程度のはずです。
roger_rafael

2022/10/26 06:59

承知いたしました。 削除リクエスト完了いたしました。 ご指摘ありがとうございます。 大変申し訳ありませんが、デバッグ未修のため、ご教示いただきたく存じます。
BeatStar

2022/10/26 07:42

デバッグ等の説明はご自分で調べてください。 プログラマやSEは「調べること」と「考えること」が仕事です。 仮に趣味でやるとしても、半端にやるよりもちゃんとできた方が良くないですか? 私ならできる限り極めたいと思いますけど…(できるかどうかは別として) 言語はJavaで、環境はEclipseということなので「Java Eclipse デバッグ 方法」とか 「Java デバッグ 考え方」のように調べたらいくらでも出てきますよ。 例: 「Java Eclipse デバッグ」での検索結果例 → https://ittoybox.com/archives/341 やり方のヒントとして、『コードの流れを追う』です。
m.ts10806

2022/10/26 07:44

eclipseなら実行メニューに「デバッグ実行」の項目があるはずです。 デバッグモードでアプリケーションを実行します。 あとは「ブレイクポイント」の付け方とブレイクポイントで止まった時の「変数の値の参照の仕方」を調べてください。 ※ただ、デバッグの仕方を全く教えないままの学校ですか?もし完全に独学だとしても、やはりデバッグについては入門編で覚えるべきなので、今手を止めてでも覚えた方が良いと思います。
m.ts10806

2022/10/26 07:47 編集

BeatStarさん 課題解いてる段階の入門者(もしかしたら学校の課題)に業務的な話をするのは飛躍しすぎだと思います。 仰っていることは間違いではないですが、ちょっと飛躍しすぎて伝わらないし、質問者は逆に引くと思います。
BeatStar

2022/10/26 07:48 編集

なんかざっと見た感じ、基礎からやり直した方がよさそうな気がします。 少なくともmainメソッドが複数ありますけど、普通に一個で十分です。 それにエラーメッセージも読んでなさそうですね… エラーメッセージは暴言でもランダムに表示されるナニカでもなく、「コンパイラ等からのメッセージ」です。 他人と会話しているときは相手の話を聞きますよね? それと一緒です。 「おーい、なんか○○っていう変数を使っているようだけどどこにも無ぇーぞ?もしかして忘れてんじゃね?」みたいな感じでコンパイラとかから言われているのです。(メッセージはあくまで例) なのでメッセージを読めば、基礎ができていれば簡単に対処できることが多いですよ。(例外もあるが)
roger_rafael

2022/10/26 10:03

ご指摘ありがとうございます。 まだデバッグはカリキュラムで出てきておらず、未修なのですが、以下のエラーが出る原因のヒントをご教示いただくことは可能でしょうか。 ・ローカル変数nameの値は使用されていません。 ・ローカル変数ageの値は使用されていません。 ・メソッドbark()は型Animalで未定義です。 ・コンソールに「名前は山田 太郎です!」だけ表示される状態。
m.ts10806

2022/10/26 10:22

一応、胸にとどめておいてもらいたいのですが、 学校の課題でしたら赤の他人よりも聞くべき先があります。 赤の他人ゆえに課題の意図や意味など全く無視のアドバイスがつくことがありますし、 課題提出するものであれば、説明求められたときに自分で説明できないと「誰にやってもらった?」となって評価に直結します。
jimbe

2022/10/26 12:00 編集

デバッグて一通りコードを書いてからするようなカリキュラム順になっているんですね…。そもそも教える側が大丈夫なのかと心配になります。
jimbe

2022/10/26 16:47 編集

コードがごちゃごちゃになってしまっていて、何処が正しくて何処が間違っていると捉えれば良いのか分かりません。 コメントの問やその下のコードは、書いている場所とか内容は合っているのでしょうか。 ついでに、コードはファイル毎にマークダウンは分けていただきたいです。
roger_rafael

2022/10/27 00:38

〉コメントの問やその下のコードは、書いている場所とか内容は合っているのでしょうか。 コメントの問の書いている場所は合っているかと思います。 その下のコードは自分で書いたコードのため、内容の正誤が分からない状態です。
roger_rafael

2022/10/27 01:04

・メソッドbark()は型Animalで未定義です。 のエラー原因として、以下の様な原因が考えられるかと思いますが、いかがでしょうか? ・変数がそもそも宣言されていない ・宣言はしているが、変数のスコープの適応外の場所で参照しようとしている
BeatStar

2022/10/27 02:42

> ・メソッドbark()は型Animalで未定義です。 のエラー原因として、以下の様な原因が考えられるかと思いますが、いかがでしょうか? メッセージそのままですよ。 「Animalという型にはbarkメソッドというものは存在しない」ってことです。 クラス定義に無いものを使おうとしていることが原因です。 たとえば dog.ohayou(); みたいな感じ。そもそもohayouメソッドがAnimalに無いから使えない。って感じで。
BeatStar

2022/10/27 02:45

というか、本物のmainメソッドはどこでしょうか? なんか俺には2つあるように見えるのですが…。 Main.mainの方でいいですかね?
pig_vba

2022/10/27 02:59

>BeatStarさん 回答でも書きましたがなぜか存在するAnimal.main内にBark()関数入れてるのが原因かと。
jimbe

2022/10/27 03:56 編集

年齢を出すために Calendar を使った問のロジックを利用すべき所を、問の Main クラスそのものを埋め込んだような感じでしょうか。 で、 bark メソッド名が Animal に必要だと思って入れたら、書く場所がテキトウだったと。 bark はそもそも Animal に入れず、 Animal animal = new Dog() は普通に Dog dog = new Dog() 想定な気がします。
pig_vba

2022/10/27 04:40

そのコメントで気づきましたが親クラス型変数を子クラスでインスタンス化してるのすんごい矛盾ですね
m.ts10806

2022/10/27 04:45

今のコードからどうにかしようとするのじゃなく、論理的矛盾がないように役割を加味して作り直した方が早そうですね。
BeatStar

2022/10/27 12:02

@ jimbeさん > bark はそもそも Animal に入れず、 Animal animal = new Dog() は普通に Dog dog = new Dog() 想定な気がします。 そうですかね? 確かにこの仕様的にはそっちの方がすんなり行きそうですけどそれだとAnimalを用意する必要性が無い気がしますけど…
roger_rafael

2022/10/27 12:10

皆様ありがとうございます。 以下が表示されないのはメインメソッドでの呼び出しができていないからでしょうか? 私の名前は、山田太郎です! これから、私のペットを紹介します! 名前は、ポチです! 2020/07/27で7歳になります!
BeatStar

2022/10/27 12:19

@ roger_rafaelさん えっと…今のコードで…ですか?
roger_rafael

2022/10/27 12:39

@BeatStarさん 仰る通りです。 その他にも色々と欠陥あると思いますが… ちなみに正解のコードはイメージされている感じでしょうか?
BeatStar

2022/10/27 12:49

俺の頭の中にすでにある程度(7割程度?)はなんとなく思いついていますね。 ただタイポ(タイプミス)とかもありそうなので完璧じゃないですが。 ちょっと怪しいのが『動物と鳴き声の一覧』ですね。 多分「Dogクラスだとbarkメソッド、Catクラスだとmeowメソッド」…というようなクラスごとに違うところですね。Animalクラスがあるので意味がありそうだし…。 そこ以外はそのまま組めばいいです。
jimbe

2022/10/27 17:09 編集

>Animalを用意する必要性が無い気がします もちろん、一連の問で出題者が何で何を教えようとしているのかは分かりませんが、問6,7 は一覧から任意に選択してのクラス・メソッド定義であり、 Animal は継承としか言われず、追加・修正とはなっていません。名称的にマーカーと捉えても良いように思います。 showAnimal() の Animal と Dog の部分が元々 Animal animal = new Animal("ポチ",7); animal.introduce(); で、これはもちろん動作するとし、 Animal animal = new Doc("ポチ",7); に変更して、「 Animal を継承した Dog(やCat等) オブジェクトを Animal 型変数に入れても introduce は動作する」=親クラスのメソッドは動くことを確認、 さらに Dog クラスに bark メソッドを定義して animal.bark(); ・・・は動かない(出来ない)=子クラスオブジェクトを入れていたとしても親クラス型の変数では子クラスのメソッドは使えない、使うには変数を Animal 型では無く Dog 型にしなければならない・・・という一連のコンボかもしれません。 質問のコードで、何処が固定(追加も削除も変更もしてはいけない)で何処が可変(roger_rafael さんが解答として記入したもの)なのか分からないので、全体的に推測でしかありませんが。 私的には、Animal を Dog に変える他、 printByName は show, showAnimal を使用し、ペットの年齢は introduce に追加するかと考えています。
roger_rafael

2022/10/30 13:01 編集

@jimbeさん > bark はそもそも Animal に入れず、 Animal animal = new Dog() は普通に Dog dog = new Dog() 想定な気がします。 すみません、こちらはどのメソッドでのお話でしょうか?
roger_rafael

2022/10/30 13:00

@jimbeさん > 質問のコードで、何処が固定(追加も削除も変更もしてはいけない)で何処が可変(roger_rafael さんが解答として記入したもの)なのか分からないので、全体的に推測でしかありませんが。 基本的に問の下のコードは可変で、それ以外は元々マークされていたコードです。
roger_rafael

2022/10/30 13:08 編集

@jimbeさん > 私的には、Animal を Dog に変える他 Animal animal = new Dog("ポチ", 7); ↓ Animal Dog = new Dog("ポチ", 7); 以上の修正でお間違いないでしょうか? > printByName は show, showAnimal を使用し printMyNameは必須で使用する必要があります。 > ペットの年齢は introduce に追加するかと考えています。 追加方法をご教示いただけますでしょうか?
jimbe

2022/10/30 13:12

>こちらはどのメソッドでのお話でしょうか? showAnimal() です。 show() や showAnimal() は元?のままなのでしょうか。Dog か Cat かが解答者次第とすれば少なくとも new Dog() は修正されたものと思いますが。
jimbe

2022/10/30 13:19

> 追加方法をご教示いただけますでしょうか? 部分々々をどうこう言っているよりも回答として動作するコード全体を出せば早いのですが、ご質問内容が課題ということで、出して良いものか迷っています。 ヒントのみで辿り着ければベストかと思いますが、そのようにヒントを書く能力はなかなか…すいません。
jimbe

2022/10/30 13:27

printMyName が現状自分で println で名前を出力していますが、 Main には show や showAnimal があります。 そして printMyName のコメントは「自身の名前とペットを紹介する旨の内容をコンソールへ出力する」で、 show が名前、 showAnimal がペットの情報を出力するメソッドになっています。 従って、「printByName は show, showAnimal を使用」して実装するのでは・・・ということです。
roger_rafael

2022/10/30 13:57

@jimbe様 ご回答、誠にありがとうございます。 > 部分々々をどうこう言っているよりも回答として動作するコード全体を出せば早いのですが、ご質問内容が課題ということで、出して良いものか迷っています。 すみません、課題という書き方をしてしまいましたが、特に提出が必要というものではありません。 当方Java初学者の学生で、スクールに通ったり、有料質問サイトで質問するだけの金銭がありません。 いただいた秀逸なヒントでも、なかなか出力できない自分の実力不足に歯痒い思いを抱いている日々で、正直Javaに挫折している状態です。 現状長期間出力できない日々が続いており、野暮なお願いで大変恐縮なのですが、動作するコードをいただくことは可能でしょうか。 お忙しいところ多大なるお手数をお掛けいたしまして大変申し訳ございませんが、何卒よろしくお願い申し上げます。
jimbe

2022/10/30 14:07

> 課題という書き方をしてしまいましたが、特に提出が必要というものではありません。 なるほど、了解しました。 ご自身でご自身に課題と設定したものということですね。
roger_rafael

2022/10/30 15:07 編集

@jimbe様 〉 なるほど、了解しました。 ご自身でご自身に課題と設定したものということですね。 仰る通りでございます。 紛らわしい書き方をしてしまい失礼いたしました。

回答4

4

・メソッドbark()は型Animalで未定義です。

java

1public class Animal{ 2... 3 4 public class Main { 5 public static void main(String[] args) throws Exception { 6 7 Calendar calendar = Calendar.getInstance(); 8 SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd"); 9 System.out.println(sdf.format(calendar.getTime()) + "で" + "歳になります!"); 10 } 11 12 protected void bark() { 13 } 14 } 15}

私はjavaは専門外なので初歩的な質問で申し訳ないのですが、Animal.main.bark()となっているように見えますが位置はあっていますか?

投稿2022/10/27 01:16

pig_vba

総合スコア648

spoofy_dragon, m.ts10806, roger_rafael, gandamu👍を押しています

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

roger_rafael

2022/10/30 12:50

ご回答ありがとうございます。 正しい位置はどこになるとお考えでしょうか?
pig_vba

2022/10/31 06:36

正答としてはjimbeさんが示してくださっているように「本来AnimalクラスではなくDogクラスで定義すべき関数なので定義しない」ですが、仮にAnimalクラスに実装するなら単純にAnimal.mainのネストの外になると思います。 厳しいことを言いますが、最低限どこに直すかくらいは自分で考えてほしかったです。その返信内容は「自分では何も考えません。答えだけ教えろ」と言ってるようなもんですよ。自分の案すら述べてませんし
roger_rafael

2022/11/02 07:26

ご回答ありがとうございます。 大変失礼いたしました。

2

花子さんと猫にしてみました。

package がこちらで違うので、 package 文は外しています。

Main.java

java

1public class Main { 2 public static void main(String[] args) { 3 printMyName("鈴木", "花子"); 4 } 5 static void show(String name) { 6 System.out.println("私の名前は" + name + "です!"); 7 } 8 static void showAnimal(String name, int age) { 9 System.out.println("これから、私のペットを紹介します!"); 10 Cat cat = new Cat(name, age); 11 cat.introduce(); 12 cat.meow(); 13 } 14 private static void printMyName(String familyName, String personalName) { 15 show(fullName(familyName, personalName)); 16 String name = "タマ"; 17 int age = 3; 18 showAnimal(name, age); 19 } 20 private static String fullName(String familyName, String personalName) { 21 return familyName + personalName; 22 } 23}

Animal.java
※オリジナルのまま

Cat.java

java

1public class Cat extends Animal { 2 public Cat(String name, int age) { 3 super(name, age); 4 } 5 protected void meow() { 6 System.out.println("にゃーにゃー!"); 7 } 8 protected void introduce() { 9 super.introduce(); 10 Calendar calendar = Calendar.getInstance(); 11 calendar.add(Calendar.MONTH, 5); 12 calendar.add(Calendar.DAY_OF_MONTH, 15); 13 SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd"); 14 System.out.println(sdf.format(calendar.getTime()) + "で" + getAge() + "歳になります!"); 15 } 16}

実行結果

plain

1私の名前は鈴木花子です! 2これから、私のペットを紹介します! 3名前は、タマです! 42023/04/17で3歳になります! 5にゃーにゃー!

投稿2022/10/30 14:17

編集2022/11/02 11:00
jimbe

総合スコア10757

spoofy_dragon, roger_rafael👍を押しています

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

roger_rafael

2022/10/30 15:07

@jimbe様 ご回答誠にありがとうございます。 お手数おかけいたしまして大変申し訳ございません。 すみません、以下のエラーが出て上手く出力できなかったのですが、どのように修正すればよろしいでしょうか? 【Animal.java】 protected int getAge() { return this.age; } 型 Animal にメソッド getAge() が重複しています System.out.println(sdf.format(calendar.getTime()) + "で" + getAge() + "歳になります!"); ・メソッド名`getAge`を変更します ・メソッドの戻りの型を`void`に設定します ・コンストラクターに変更
jimbe

2022/10/30 15:14 編集

Main.java に入れられる」という意味をお伝え出来なかったようです。 回答のコード全部を Main.java の package 文の下全部を置き換える形でコピペした後、既存の Animal.java ファイルは削除するか、どこか他のディレクトリに移動させるか等してください。Main.java 内の定義とぶつかってしまいます。 ・・・いや、こちらの回答のクラスを元通り分けたほうが良いでしょうか。
jimbe

2022/10/30 15:24 編集

ちなみに、どのような環境で実行されているのでしょうか。 インターネット上で誰でも使えるのであれば私もそこで実行してみたいのですが。
roger_rafael

2022/10/30 16:30

@jimbe様 〉いや、こちらの回答のクラスを元通り分けたほうが良いでしょうか。 お手数お掛けいたしますが、分けていただくことは可能でしょうか? お手数お掛けいたしまして大変申し訳ございません。
roger_rafael

2022/10/30 16:32

@jimbe様 すみません、既に分けていただきありがとうございました。
jimbe

2022/10/30 16:55

余計なことをしたのはこちらですのでお気になさらず^^; 動作しましたでしょうか。
roger_rafael

2022/11/02 07:01

@jimbe様 すみません、クラスを分けても、やはり以下のエラーが出て上手く出力できなかったのですが、どのように修正すればよろしいでしょうか? 【Animal.java】 protected int getAge() { return this.age; } 型 Animal にメソッド getAge() が重複しています System.out.println(sdf.format(calendar.getTime()) + "で" + getAge() + "歳になります!"); ・メソッド名`getAge`を変更します ・メソッドの戻りの型を`void`に設定します ・コンストラクターに変更
roger_rafael

2022/11/02 07:04

またpackage文は残し、実行したいと考えております。
roger_rafael

2022/11/02 07:10

またペットの年齢は、実行する日より「5ヶ月15日後」の日付を表示したいのですが、以下のコードでお間違いないでしょうか? Calendar calendar = Calendar.getInstance(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd"); Calendar calendar = Calendar.getInstance(); System.out.println(sdf.format(calendar.getTime()) + "で" + "歳になります!"); calendar.add(Calendar.MONTH, 5); calendar.add(Calendar.DAY_OF_MONTH, 15); System.out.println(sdf.format(calendar.getTime())); } }
roger_rafael

2022/11/02 07:15

またMain.javaの public static void main(String[] args) { printMyName("鈴木", "花子"); } と static void show(String name) { System.out.println("私の名前は" + name + "です!"); } の間に String name = "タマ"; int age = 7; を挿入するには、どのようにコードを変更すればよろしいでしょうか?
roger_rafael

2022/11/02 07:28

また既存のAnimal.javaファイルは残して実行したいと考えております。
jimbe

2022/11/02 09:42 編集

> またペットの年齢は、実行する日より「5ヶ月15日後」の日付を表示したいのですが、以下のコードでお間違いないでしょうか? 「実行日より5か月15日後が表示」されたかは実行してみれば分かると思うのですが…。 個人的には、 "5か月15日後" は月跨ぎが発生する場合に月日どちらを先に加算するかで結果が変わる時がありますが、その場合にどうするのかを知りませんので判断し兼ねます。 それで良いのでしたら良いのではないでしょうか。 >~間に >String name = "タマ"; >int age = 7; >を挿入するには~ そのまま入れれば良いのではないでしょうか。 メソッドの宣言の間であっても変数宣言を入れると、それはフィールドとなります。問3 ではこれらはローカル変数だと言ってますけどいいのでしょうか。 > 既存のAnimal.javaファイルは残して実行したい それは「 Animal.java は変えずに」という前提があったということでしょうか。 質問へのコメントで『質問のコードで、何処が固定(追加も削除も変更もしてはいけない)で何処が可変(roger_rafael さんが解答として記入したもの)なのか分からない』と書きましたのは、まさにこのようなことです。 しかし、 Animal.java には既に Main クラスを(強引に)追加した状態で「残す」というのは… Anima.Main クラスは消して良いのでしょうか。(あっても使われないだけですけど。)
jimbe

2022/11/02 09:39

Animal クラスはオリジナルを利用するので回答から削除して、 Cat クラスに introduce を追加しました。 ペットの年齢の表示で日付を「5ヶ月15日後」にするのは、コメントに頂いた加算部分を入れました。
roger_rafael

2022/11/02 10:33

@jimbe様 ご回答ありがとうございます。 > それは「 Animal.java は変えずに」という前提があったということでしょうか。 仰る通りです。 Animal.javaファイルは削除せず、残して実行したいです。
roger_rafael

2022/11/02 10:34

@jimbe様 > Anima.Main クラスは消して良いのでしょうか。(あっても使われないだけですけど。) 大丈夫でございます。
jimbe

2022/11/02 10:58

> Animal.javaファイルは削除せず、残して あ、回答から削除したのは変更しないという意味で、Animal クラスを使っていないわけではありません。
roger_rafael

2022/11/02 11:50

@jimbe様 ご回答ありがとうございます。 度々申し訳ありません。 「Main.java」・「Cat.java」「Animal.java」の3つのファイルは必須で分けて用意する必要があり、「Animal.java」の以下のコードは必須で使用する必要があります。 package animal; import java.text.SimpleDateFormat; import java.util.Calendar; public class Animal { private String name; private int age; public Animal() { } public Animal(String name, int age) { this.name = name; this.age = age; } protected void setName(String name) { this.name = name; } protected void setAge(int age) { this.age = age; } protected String getName() { return this.name; } protected int getAge() { return this.age; } protected void introduce() { System.out.println("名前は、" + getName() + "です!"); }
roger_rafael

2022/11/02 11:53

以上のコードの下に以下の問があり、先程ご教示いただいたコードですと動作しませんでした。 // 問⑤ 以下の条件で、Calendarクラスを使用して、yyyy/MM/dd形式で誕生日を取得しなさい // - 1: Calendarクラスの変数名 = calendar // - 2: 実行する日より「5ヶ月15日後」の日付を表示しなさい
jimbe

2022/11/02 12:08

その問5は、どのメソッドに書くものなのでしょうか。 (少なくとも質問に書かれていたように class Main を Animal クラスに入れることでは無いはずです。) Animal クラスに誕生日はありませんし、"取得" と "表示" は意味が違うものです。つまりその問には何か他に前提があるのかもしれません。
roger_rafael

2022/11/03 03:16

@jimbe様 > その問5は、どのメソッドに書くものなのでしょうか。 Animalメソッドで、以下のコードの下に入れたく存じます。 package animal; import java.text.SimpleDateFormat; import java.util.Calendar; public class Animal { private String name; private int age; public Animal() { } public Animal(String name, int age) { this.name = name; this.age = age; } protected void setName(String name) { this.name = name; } protected void setAge(int age) { this.age = age; } protected String getName() { return this.name; } protected int getAge() { return this.age; } protected void introduce() { System.out.println("名前は、" + getName() + "です!"); }
jimbe

2022/11/03 04:00 編集

>Animalメソッドで、以下のコードの下に入れたく存じます。 まず、それは Aninal メソッド、では無く Animal クラス、です。(「class Animal」と書いていますよね。) クラスとメソッドの区別が付いていないとそもそも話が噛み合いませんので、お気をつけください。 クラスはメソッドやフィールド等を含みますが、処理そのもの(if 文とかfor文とか)は直接は含めません。 メソッドは処理そのものを含みますが、クラス内にしか書けません。 そして、メソッドを新たに作るなら、問4のように名前・型・引数等が明確でなければ、解答として「誰もが同じ答にたどり着く」ということは出来ません。(美味しいケーキを作りなさいと言われて誰もが同じケーキを作るでしょうか?) 更には、先のコメントでは「Animal クラスは変えない」と言われています。 メソッドを追加するということは「変える」ということです。 この二律背反はどのようにお考えでしょうか。 もう一度質問を見てみると、他の問は番号順になっていますが問5だけ外れています。 本当に問5は Animal クラスに対して行うことなのでしょうか。 もし問5が問4の次にあったとしたら、問5で触れられていない情報「どのクラスのどのメソッドに書くのか」は、問4の続きとして Main クラスの printMyName メソッドに書くものということも考えられませんか?
roger_rafael

2022/11/03 04:55

@jimbe様 > 更には、先のコメントでは「Animal クラスは変えない」と言われています。 メソッドを追加するということは「変える」ということです。 この二律背反はどのようにお考えでしょうか。 度々申し訳ありません。「変える」で間違いありません。 > もう一度質問を見てみると、他の問は番号順になっていますが問5だけ外れています。 本当に問5は Animal クラスに対して行うことなのでしょうか。 もし問5が問4の次にあったとしたら、問5で触れられていない情報「どのクラスのどのメソッドに書くのか」は、問4の続きとして Main クラスの printMyName メソッドに書くものということも考えられませんか? 問5は Animal クラスに対して行う処理のはずですが、仰る通り名前・型・引数等が明確でないため、Main クラスの printMyName メソッドに書くものだったかもしれません。 当サイトで一連のご質問を行う前にコードを何度も書き換えたので、誤って問自体を移動させてしまった可能性も考えられます。申し訳ありません。
jimbe

2022/11/03 05:11

問を読み間違えている可能性があるのでしたら、こちらがそのオリジナルを直接読めなければ、打つ手はありません。roger_rafael さんからの情報が全てですので。 オリジナルがネットにあるか、テキストファイルであるか、印刷物でありましたら、質問本文に URL/コピペ/写真画像等で追加して頂いたほうが早いかもしれません。
roger_rafael

2022/11/03 05:33

@jimbe様 承知いたしました。 質問本文に、現状のコード画像を追加させていただきました。 お手数をお掛けいたしますが、ご確認の程よろしくお願いいたします。
jimbe

2022/11/03 05:49

こちらこそいろいろやって頂いてありがとうございます。 ですが・・・「現状の(roger_rafaelの手元にある)コード」では無く、 roger_rafael さんが参照されている「この一連の課題のオリジナル」を教えて頂きたいのです。 教科書に載っていたのであればその教科書の該当ページの画像とか、です。 それともこの一連の課題の問は全て roger_rafael さんご自身が考えたものでしょうか。
roger_rafael

2022/11/03 06:04

@jimbe様 失礼いたしました。 知り合いに作成してもらったオリジナルのコードに、ご教示いただいたコードなどを上書きしていったので、現状オリジナルのコードは手元にないのですが、問の下のコード以外は基本的にオリジナルのコードでございます。 ご回答になっておりますでしょうか?
jimbe

2022/11/03 06:40

> 知り合いに作成してもらったオリジナルのコード 設問自体もお知り合いからでしょうか?
roger_rafael

2022/11/03 06:54 編集

@jimbe様 > 設問自体もお知り合いからでしょうか? 設問自体も知り合いのオリジナルでございます。
jimbe

2022/11/03 06:59

>設問自体も知り合いのオリジナルでございます でしたら、その人から問の並びやその真意(問5はどこにどう作るのが正解と想定しているのか、 Animal クラスは変更するのかしないのか等)を聞いたほうが良いと思います。
roger_rafael

2022/11/03 07:48

@jimbe様 問5はAnimalクラスに、Animalクラスは変更して構わないとのことでしたが、その情報しかいただけませんでした…
jimbe

2022/11/03 08:33

>~その情報しか う~ん… Animal クラスにペットの誕生日の情報を入れるとすれば、やはり introduce メソッドに Calendar 云々を入れるのがスマートだと私は思います。
roger_rafael

2022/11/03 10:18 編集

@jimbe様 なるほど。ご回答ありがとうございます。 元のオリジナルコードが見つかりましたので、質問に追加させていただきました。 お手数をお掛けいたしますが、ご確認の程よろしくお願いいたします。
roger_rafael

2022/11/03 10:19

上からメインクラス・ドッグクラス・アニマルクラスでございます。

1

エラーの直接の原因は全部の質問共通で、引数を4つとるメソッドに2つしか渡していないことです

で、なぜそんなことになっているかを推測すると、

// - 1. アクセス修飾子 = private // - 2. 引数: // - 2-1. 姓(セイ) // - 2-2. 名(メイ) // - 3. 戻り値 = なし

と、引数2つで作るように問題では指示されているのに、
それをあなたが無視しているからでしょう。

投稿2022/10/26 05:44

ozwk

総合スコア13048

roger_rafael👍を押しています

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

roger_rafael

2022/10/26 06:23

承知いたしました。ありがとうございます。

0

すみません、回答云々ではありません。
これ、授業の課題か何かですよね。自分で考えるべき所でしょうから、ここで答えを聞き出そうというのはサイトの意義に反していると思われます。

エラーを見て自分で悩んでください。

投稿2022/10/28 00:06

FugahogeDS

総合スコア23

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

2022/11/06 08:46

こちらの回答が複数のユーザーから「質問に対する回答となっていない投稿」という指摘を受けました。

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

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

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

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Java

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