質問編集履歴

2

微修正です。

2021/10/31 10:31

投稿

Chris1943
Chris1943

スコア1

test CHANGED
File without changes
test CHANGED
@@ -38,11 +38,7 @@
38
38
 
39
39
 
40
40
 
41
- ```
42
-
43
- 次の要素がクラスBirdであることは判別できても現在の要素(Dogのインスタンス)に特定処理実施させる方法がわかりません。
41
+ 次の要素がクラスBirdであることは判別できても現在の要素(Dogのインスタンス)み、changeFlag()呼び出させる方法がわかりません。
44
-
45
- ```
46
42
 
47
43
 
48
44
 

1

クラス名、メソッド名を詳細化しました。

2021/10/31 10:31

投稿

Chris1943
Chris1943

スコア1

test CHANGED
File without changes
test CHANGED
@@ -4,31 +4,31 @@
4
4
 
5
5
  ListIteratorを用いてリストの操作を行っています。
6
6
 
7
- クラスを継承しているクラスA1,A2,A3,A4があります。
7
+ クラスAnimalを継承しているクラスHuman,Cat,Dog,Birdがあります。
8
-
8
+
9
- それぞれのインスタンスをArrayList<A>に追加していきます。今回は以下の順で追加します。
9
+ それぞれのインスタンスをArrayList<Animal>に追加していきます。今回は以下の順で追加します。
10
10
 
11
11
  |追加する順|クラス|
12
12
 
13
13
  |:--|--:|
14
14
 
15
- |1|A1|
15
+ |1|Human|
16
-
16
+
17
- |2|A2|
17
+ |2|Cat|
18
-
18
+
19
- |3|A3|
19
+ |3|Dog|
20
-
20
+
21
- |4|A4|
21
+ |4|Bird|
22
22
 
23
23
 
24
24
 
25
25
  【実現したいこと】
26
26
 
27
- 次の要素のクラスがA4の時、そのクラスに特定の操作を実施する。
27
+ 次の要素のクラスがBirdの時、そのクラスに特定の操作を実施する。
28
28
 
29
29
  for文を用いた方法はわかるのですが、ListIteratorを用いた方法がわかりません。
30
30
 
31
- 今回でいうと、次の要素のクラスがA4である、A3特定処理させたいです。
31
+ 今回でいうと、次の要素のクラスがBirdであるDogでのみ、changeFlag()呼び出したいです。
32
32
 
33
33
  お願いいたします。
34
34
 
@@ -40,7 +40,7 @@
40
40
 
41
41
  ```
42
42
 
43
- 次の要素がクラスA4であることは判別できても、現在の要素に特定の処理を実施させる方法がわかりません。
43
+ 次の要素がクラスBirdであることは判別できても、現在の要素(Dogのインスタンス)に特定の処理を実施させる方法がわかりません。
44
44
 
45
45
  ```
46
46
 
@@ -50,43 +50,135 @@
50
50
 
51
51
 
52
52
 
53
- ```Java
53
+ ```Main
54
-
54
+
55
- ArrayList<A> list = new ArrayList<>();
55
+ ArrayList<Animal> list = new ArrayList<>();
56
+
56
-
57
+ Human human = new Human();
58
+
57
- A1 a1 = new A1();
59
+ Cat cat = new Cat();
58
-
60
+
59
- A1 a2 = new A2();
61
+ Dog dog = new Dog();
60
-
62
+
61
- A1 a3 = new A3();
63
+ Bird bird = new Bird();
62
-
64
+
63
- A1 a4 = new A4();
65
+ list.add(human);
64
-
66
+
65
- list.add(a1);
67
+ list.add(cat);
66
-
68
+
67
- list.add(a2);
69
+ list.add(dog);
68
-
70
+
69
- list.add(a3);
71
+ list.add(bird);
70
-
72
+
73
+
74
+
71
- list.add(a4);
75
+ // ここをIteratorにしたい
72
-
73
-
74
76
 
75
77
  for(int i = 0;i < list.size(); i++){
76
78
 
77
79
  // クラスがA4かチェック
78
80
 
79
- if((i < list.size() - 1 )&&(list.get(i + 1) instanceof A4)){
81
+ if((i < list.size() - 1 )&&(list.get(i + 1) instanceof Bird)){
80
-
82
+
81
- // ここで特定の処理
83
+ list.get(i).changeFlag();
82
-
84
+
83
- }
85
+ }
84
-
86
+
85
- }
87
+ }
88
+
89
+
90
+
86
-
91
+ // dogのみTrueになっているかチェック
92
+
87
-
93
+ for(Animal animal : list){
94
+
88
-
95
+ if(!animal.getFlag()){
96
+
97
+ System.out.println("False");
98
+
99
+ }else{
100
+
101
+ System.out.println("True");
102
+
103
+ }
104
+
105
+ }
106
+
107
+
108
+
89
- ```
109
+ ```
110
+
111
+ ```Animal
112
+
113
+ class Animal{
114
+
115
+ private boolean flag = false;
116
+
117
+ Animal(){}
118
+
119
+
120
+
121
+ void changeFlag(){
122
+
123
+ flag = true;
124
+
125
+ }
126
+
127
+
128
+
129
+ boolean getFlag(){
130
+
131
+ return flag;
132
+
133
+ }
134
+
135
+ }
136
+
137
+ ```
138
+
139
+ ```Human
140
+
141
+ class Human extends Animal{
142
+
143
+ Human(){}
144
+
145
+ }
146
+
147
+ ```
148
+
149
+ ```Cat
150
+
151
+ class Cat extends Animal{
152
+
153
+ Cat(){}
154
+
155
+ }
156
+
157
+ ```
158
+
159
+ ```Dog
160
+
161
+ class Dog extends Animal{
162
+
163
+ Dog(){}
164
+
165
+ }
166
+
167
+ ```
168
+
169
+ ```Bird
170
+
171
+ class Bird extends Animal{
172
+
173
+ Bird(){}
174
+
175
+ }
176
+
177
+ ```
178
+
179
+
180
+
181
+
90
182
 
91
183
 
92
184
 
@@ -94,15 +186,15 @@
94
186
 
95
187
 
96
188
 
97
- ```Java
189
+ ```Main
98
190
 
99
191
  // ArrayList宣言から追加までは同じ
100
192
 
101
- ListIterator<A> iterator = list.listIterator();
193
+ ListIterator<Animal> iterator = list.listIterator();
102
194
 
103
195
  while(iterator.hasNext()) {
104
196
 
105
- // 次がクラスAか判別
197
+ // 次がBirdか判別
106
198
 
107
199
  // 特定の処理
108
200
 
@@ -116,4 +208,4 @@
116
208
 
117
209
 
118
210
 
119
- ここより詳細情報を記載てください
211
+ になし。