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

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

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

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

Q&A

解決済

3回答

2158閲覧

他クラスのメソッドを呼び出したい

taka0145

総合スコア7

Java

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

0グッド

1クリップ

投稿2022/01/18 07:14

前提・実現したいこと

MainクラスでEnrtyクラスを呼び出し、Entryクラスでは、Dataクラスのmapを使用したいです。

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

Main.java:6: エラー: シンボルを見つけられません Entry.enter(map); ^ シンボル: 変数 map 場所: クラス Main Main.java:6: エラー: シンボルを見つけられません Entry.enter(map); ^ シンボル: 変数 Entry 場所: クラス Main エラー2個

該当のソースコード

java

1class Main { 2 public static void main(String[] args) { 3 Entry.enter(map); 4 } 5} 6 7class Entry { 8 public static void enter(Map map) { 9 System.out.println(map.get("オレンジ")); 10 } 11} 12 13public class Data { 14 15 public static void Data(){ 16 Map<String,Integer> map = new HashMap<>(); 17 map.put("リンゴ",80); 18 map.put("オレンジ",120); 19 map.put("ブドウ",90); 20 { 21}

試したこと

ここに問題に対して試したことを記載してください。

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

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答3

0

ベストアンサー

java

1import java.util.*; // Map, HashMap 2 3class Main { 4 public static void main(String[] args) { 5 Entry.enter(Data.Data()); 6 } 7} 8 9class Entry { 10 public static void enter(Map map) { 11 System.out.println(map.get("オレンジ")); 12 } 13} 14 15class Data { 16 public static Map<String,Integer> Data() { 17 Map<String, Integer> map = new HashMap<>(); 18 map.put("リンゴ", 80); 19 map.put("オレンジ", 120); 20 map.put("ブドウ", 90); 21 return map; 22 } 23}

こういうことがしたいのですか?

追記
あるいは、こういうことですか?

java

1import java.util.*; // Map, HashMap 2 3class Main { 4 public static void main(String[] args) { 5 Entry.enter(new Data().map); 6 } 7} 8 9class Entry { 10 public static void enter(Map map) { 11 System.out.println(map.get("オレンジ")); 12 } 13} 14 15class Data { 16 public Map<String, Integer> map = new HashMap<>(); 17 18 public Data() { 19 map.put("リンゴ", 80); 20 map.put("オレンジ", 120); 21 map.put("ブドウ", 90); 22 } 23}

static や new の意味が分からないのですか?

投稿2022/01/18 11:44

編集2022/01/18 13:08
kazuma-s

総合スコア8224

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

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

taka0145

2022/01/19 05:36

一つ目を実現したかったです。 戻り値やローカル変数などを理解しておりませんでした。
guest

0

Dataクラスのmapを使用したい

Data クラスの Data メソッドのローカル変数ですので、Data メソッドが終われば消える存在です。使用はできません。

投稿2022/01/18 10:14

編集2022/01/18 10:14
jimbe

総合スコア12648

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

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

taka0145

2022/01/19 05:38

ありがとうございます。 ローカル変数を理解していなかったです。
guest

0

mainメソッドに書かれているmapという変数は定義されずいきなり利用されています。
Javaはmainメソッドを持つクラスから実行するのでその流れの中で呼び出されてないクラスは当然実行されません。

Data.Data()を先に実行して返却値得る必要あるのでは。

投稿2022/01/18 07:22

m.ts10806

総合スコア80850

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

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

taka0145

2022/01/18 07:57

MainでEntry.enter()とData.data()を別々に実行するということでしょうか?
m.ts10806

2022/01/18 22:25

別々に実行したところで、Data.data()はvoidでmapもローカルスコープの変数なので Data.data()がmapを返却するように修正し、返却値を受け取ってEntry.enterに渡す必要があります。
taka0145

2022/01/19 05:36

ありがとうございます。 返却地を返すメソッドにしたところうまくいきました。
m.ts10806

2022/01/19 07:04

伝わったようで良かったです。 解決されたのでしたら質問を解決済みにしておいてもらえると。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問