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

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

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

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

Q&A

解決済

1回答

875閲覧

Java 変数を解決できないエラーについて

Takumi.1117

総合スコア1

Java

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

0グッド

0クリップ

投稿2023/07/30 11:08

編集2023/07/31 10:31

実現したいこと

初めて利用させていただきます。
初歩的な質問ではございますが、エラー原因をご教授いただきたいです。

前提

Javaの勉強で継承とインターフェースのところをやっているのですが、エラーの原因が突き止められないので、分かる方がいらっしゃいましたらご教授いただけたらと存じます。
またこのboost以外のメソッド、carクラスのメソッドも同様にSystem.out.println()と同時に出力すると同様のエラーが返ってきてしまいます。

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

Exception in thread "main" java.lang.Error: Unresolved compilation problem:
boost を変数に解決できません

該当のソースコード

Java

1//Mainクラス 2 3public class Main { 4 public static void main(String[] args) { 5 Car car = new Car(); 6 car.drive(); 7 8 SuperCar scar = new SuperCar(); 9 scar.boost(); 10 System.out.println("boostボタンを押した" + boost );←こちらでエラーが発生 11 12 } 13}

Java

1//SuperCarクラス 2 3public class SuperCar extends Car implements UniversalSerialBus, Audio { 4 5 public void energizing() { 6 System.out.println("充電します"); 7 } 8 public void play() { 9 System.out.println("音楽を再生します"); 10 } 11 public void stop() { 12 System.out.println("音楽を停止します"); 13 } 14 15 public void boost() { 16 System.out.println("リミッターを解除します"); 17 } 18}

Java

1//Carクラス 2 3public class Car implements UniversalSerialBus, Audio{ 4 @Override 5 public void energizing() { 6 System.out.println("充電します"); 7 } 8 9 @Override 10 public void play() { 11 System.out.println("音楽を再生します"); 12 } 13 14 @Override 15 public void stop() { 16 System.out.println("音楽を停止します"); 17 } 18 19 @Override 20 public void random() { 21 System.out.println("ランダム再生します"); 22 } 23 24 public void drive() { 25 System.out.println("発進します"); 26 } 27 28 public void reverse() { 29 System.out.println("バックします"); 30 } 31 32 public void parking() { 33 System.out.println("停止します"); 34 } 35 36}

Java

1//Audioインターフェース 2 3public interface Audio { 4 void play(); 5 void stop(); 6 void random(); 7 8}

Java

1//UniversalSerialBusクラス 2 3public interface UniversalSerialBus { 4 void energizing(); 5 6} 7 8 9 10 11 12お手数ですがご確認よろしくお願いいたします。

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

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

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

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

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

hoshi-takanori

2023/07/30 11:15

boost は SuperCar クラスのメソッドなので、scar.boost() かな…。
Takumi.1117

2023/07/30 11:57

ご回答いただきありがとうございます。 私もそこを疑い入力したのですがSystem.out.println()内で入力すると、"演算子 + は引数の型 String, void で未定義です"と今度は()内全体で赤点線が表示されてしまいます。scar.boost();単体では問題なく出力できるのですが、、、。
meg_

2023/07/30 13:31

・コードはインデントが判るように「コードの挿入」で記入してください。 ・「xxを変数に解決できません」とのことですが、要約ではなくエラーメッセージ全文を掲載してください。個人情報は伏せていただいて結構です。
Takumi.1117

2023/07/30 13:48

ご回答いただきありがとうございます。 ご指摘ありがとうございます。こちらで修正できてますでしょうか。 赤点線表記で"boostを変数に解決できません"との表記です。 実行時のエラー出力については質問の方に追記させていただきました。
meg_

2023/07/30 15:36

Carクラスについての情報(コード)も掲載できませんか?
jimbe

2023/07/30 16:18 編集

コードのマークダウン(``)はコードだけを囲うようにしてください。 またこのマークダウンは、それだけの行である必要があります。(始まりの方だけは ```java 等言語名を付けるとコード内のキーワードが色変わりしたりして見易くなります) boost メソッドは void 型ですので、返り値はありません。 > System.out.println("boostボタンを押した" + scar.boost());←こちらでエラーが発生 この行によって、どのような表示となると想定しているのでしょうか。
Takumi.1117

2023/07/30 16:29

meg_様 その他のインターフェース、クラスのコードにつきましても追記させていただきました。 ご確認頂けると幸いです。
Takumi.1117

2023/07/30 16:34

jimbe様 ご回答いただきありがとうございます。 修正いたしました。ご教授いただき感謝いたします。 そちらは色々試していた際のコードでしたので、当初のものに戻させていただきました。 想定の出力結果としましては boostボタンを押した。リミッターを解除します です。 ※句点は記載忘れです。
jimbe

2023/07/31 00:14 編集

編集有難うございます。大分見易くなったのではないでしょうか。 編集の画面には常にプレビューがあると思います。 マークダウンを用いる際には、その効果・範囲が適切かを見ながらやってみてください。 もうひと押しとして、コードのマークダウンをファイル毎にし、表示とお手元の実際のファイルで行番号が一致するようにしてください。 そうすると、例えば『xx クラスの n 行目を~』のように説明が出来たり、コードの枠の右上にある [+] をクリックする事でコードがコピー出来ますのでファイル毎にコピペして実際の動作を確認し易くなります。
Takumi.1117

2023/07/31 10:35 編集

jimbe様 朝からのご対応大変感謝いたします。 コードについても修正いたしました。 teratailの使い方から見やすいようにと修正の仕方まで詳しく教えたくださり本当にありがとうございました。 また回答してくださった通りに修正したところ想定通りの出力結果を得ることができました。本当にありがとうございました。これからも学習に励もうと思います。
Takumi.1117

2023/07/31 10:37

hoshi-takanori様 meg_様 お二方もお忙しいところご回答いただきありがとうございました。 これからも学習に励ませていただきます。
guest

回答1

0

ベストアンサー

Javaの勉強で継承とインターフェースのところをやっているのですが、エラーの原因が突き止められない

発生している問題は、継承もインターフェースも関係ありません。
java において、

・変数を使うにはどうしなければいけないのか
・メソッドが値を返すにはどうしなければいけないのか
・『System.out.println()と同時に出力する』という表現はおかしく、それは『文字列を繋げて、System.out.println() で出力する』である

という恐らくはここまでの間に勉強されたであろうことの理解が、まだ足りていないものと思います。

ご提示のコードがどのような経緯で示され何処が変えて良くて何処が変えてはいけないのかご分かりませんが、エラーの出ている

System.out.println("boostボタンを押した" + boost );

を(変更せずに)実行したら boostボタンを押した。リミッターを解除します と表示されるようにするとするなら、
boost メソッドは

java

1public String boost() { 2 return "。リミッターを解除します"; 3}

とし、先の表示の直前では

java

1String boost = scar.boost();

とすることになるでしょう。

boost以外のメソッド、carクラスのメソッドも同様に

修正方法も同様ですが、これらの修正時には継承・インターフェース(の実装)が関係しますので注意です。

投稿2023/07/30 23:57

jimbe

総合スコア13327

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問