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

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

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

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

Q&A

解決済

2回答

3780閲覧

入力された値を代入しメソッドを使う方法

takoyaking

総合スコア19

Java

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

0グッド

0クリップ

投稿2019/05/20 05:03

編集2019/05/20 05:34

前提・実現したいこと

mainのコメント文のところに追加したいです。
例えばnumに1が入力されたら
Ec(num).printInfo();
Ec1.printInfo();
となり,idとnameを出力するようにしたいです。
if文で追加していくしかないのでしょうか?

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

エラーメッセージ

該当のソースコード

java

1import java.util.Scanner; 2 3public class Example_main { 4 5 public static void main(String[] args) { 6 // TODO 自動生成されたメソッド・スタブ 7 Example_class Ec1 = new Example_class(1,"山田一郎"); 8 Example_class Ec2 = new Example_class(2,"山田二郎"); 9 Example_class Ec3 = new Example_class(3,"山田三郎"); 10 Example_class Ec4 = new Example_class(4,"山田四郎"); 11 Example_class Ec5 = new Example_class(5,"山田五郎"); 12 13 Example_entry Ee = new Example_entry(); 14 Scanner sc = new Scanner(System.in); 15 System.out.print("uidを入力してください >"); 16 int num = sc.nextInt(); 17 for(int i = 0; i <= Ee.entry_ok.length; i++) { 18 if(num == Ee.entry_ok[i]) { 19 //System.out.println("Ec" + num + .printInfo();) 20 //System.out.println("〇"); 21 break; 22 } 23 else if((i+1) == Ee.entry_ok.length) { 24 System.out.println("entry_okではありません"); 25 break; 26 } 27 } 28 } 29 30}

java

1public class Example_class { 2 private int id; 3 private String name; 4 5 Example_class(int id,String name){ 6 this.id = id; 7 this.name = name; 8 } 9 10 public void printInfo() { 11 System.out.println("idは" + this.id); 12 System.out.println("nameは" + this.name); 13 }

java

1public class Example_entry { 2 int[] entry_ok = {1,3}; 3}

試したこと

System.out.println(Ec+num+.printInfo(););

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

Eclipse

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

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

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

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

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

m.ts10806

2019/05/20 05:16

>質問がわかりづらくてすみません。 補足情報とはそういうことではないので、言語のバージョンとか使っているフレームワークとか、開発環境を記載してください。
guest

回答2

0

絶対にこの書き方ですか?

それとも最終的に動けばいいのであれば配列またはリスト構造あたりを使います。

私はJavaは不慣れなので明言は避けますが、

私なら、

Java

1List<Example_class> ec = new ArrayList<Example_class>(); 2ec.add( new Example_class(1,"山田一郎") ); 3ec.add( new Example_class(1,"山田次郎") ); 4ec.add( new Example_class(1,"山田三郎") ); 5

としておいて、

Java

1for( int i = 0; i < ec.length(); i++ ){ 2 Example_class tmp = ec.get(i); 3 System.out.print( "Ec: " ); 4 tmp.printInfo(); 5}

という風にしますね。

もちろん、配列でもいいですし、LinkedListでも構いません。

こうすれば、C++的に書くと ec[i].printInfo() みたいな感じになる。
(あくまでイメージ。)


[追記1]

ArrayListやLinkedListはListというクラス(?)を継承しています。(abstractだったか、interfaceだったか知りませんが...)

(外側から見たとき、)親のメンバだけで事足りるので、基本的には
List<int> objs = new ArrayList<int>();
のように書くようです。

デザインパターンのFactoryパターンをやるとわかりやすいかも...

投稿2019/05/20 05:39

編集2019/05/22 01:47
BeatStar

総合スコア4958

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

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

takoyaking

2019/05/21 00:45

初心者なものでArrayListの使い方がまだわかってなかったのですがBeatStarさんの回答を見て理解が深まりました。回答ありがとうございます!
guest

0

ベストアンサー

例えばnumに1が入力されたら

Ec(num).printInfo();
Ec1.printInfo();

変数の値によって複数のデータから一つと選び出すのでしたら, BeatStar さんの言われるように配列等を使用することになると思います.

java

1 public static void main(String[] args) { 2 Example_class[] Ec = new Example_class[5]; 3 //配列は 0 始まり 4 Ec[0] = new Example_class(1,"山田一郎"); 5 Ec[1] = new Example_class(2,"山田二郎"); 6 Ec[2] = new Example_class(3,"山田三郎"); 7 Ec[3] = new Example_class(4,"山田四郎"); 8 Ec[4] = new Example_class(5,"山田五郎"); 9 10 Example_entry Ee = new Example_entry(); 11 Scanner sc = new Scanner(System.in); 12 System.out.print("uidを入力してください >"); 13 int num = sc.nextInt(); 14 for(int i = 0; i <= Ee.entry_ok.length; i++) { 15 if(num == Ee.entry_ok[i]) { 16 Ec[num-1].printInfo(); 17 System.out.println("〇"); 18 break; 19 } 20 else if((i+1) == Ee.entry_ok.length) { 21 System.out.println("entry_okではありません"); 22 break; 23 } 24 } 25 }

投稿2019/05/20 12:16

jimbe

総合スコア12545

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

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

takoyaking

2019/05/21 00:43

分かりやすく説明していただきありがとうございます! 配列使わないとやはり無理ですよね。。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問