回答編集履歴

1

おまけ

2018/05/19 09:24

投稿

KSwordOfHaste
KSwordOfHaste

スコア18394

test CHANGED
@@ -19,3 +19,101 @@
19
19
 
20
20
 
21
21
  countメソッドの中でScannerインスタンスが必要なのでcountメソッドの引数として渡すかフィールドに覚えておくかしなければなりません。
22
+
23
+
24
+
25
+ ---
26
+
27
+ 追記:
28
+
29
+ staticメソッドを極力使わず、各クラスの各メソッドの引数に一々Scannerなどの情報を渡さずに済ます骨組みみたいなものを書いてみました。(単なる一例です)
30
+
31
+
32
+
33
+ ```java
34
+
35
+ class RPG {
36
+
37
+ public static void main(String[] args) {
38
+
39
+ try (sc = new Scanner(System.in)) {
40
+
41
+ RPG rpg = new RPG();
42
+
43
+ rpg.sc = sc;
44
+
45
+ rpg.run();
46
+
47
+ }
48
+
49
+ }
50
+
51
+
52
+
53
+ Scanner sc;
54
+
55
+ Hero hero;
56
+
57
+
58
+
59
+ void run() {
60
+
61
+ hero = new Hero(this, "勇者サトゥー");
62
+
63
+ for (;;) {
64
+
65
+ ...
66
+
67
+ // スライム出たー
68
+
69
+ encounter();
70
+
71
+ hero.encounter();
72
+
73
+ }
74
+
75
+ }
76
+
77
+
78
+
79
+ static void encounter() {
80
+
81
+ int decision = sc.nextInt(); // こうすればScannerにアクセスできる
82
+
83
+ ...
84
+
85
+ }
86
+
87
+ }
88
+
89
+
90
+
91
+ class Hero {
92
+
93
+ RPG rpg;
94
+
95
+ String name;
96
+
97
+
98
+
99
+ Hero(RPG rpg, String name) {
100
+
101
+ this.rpg = rpg;
102
+
103
+ this.name = name;
104
+
105
+ }
106
+
107
+
108
+
109
+ void encounter() {
110
+
111
+ int decision = rpg.sc.nextInt(); // こうすればScannerにアクセスできる
112
+
113
+ }
114
+
115
+ }
116
+
117
+ ```
118
+
119
+ 必要なインスタンス(RPGインスタンスやHeroインスタンス)の繋がりをフィールドに覚えておくとそのフィールドを通じて必要なインスタンスの必要な情報に全て手が伸ばせるという感じです。