質問編集履歴

4

a

2017/12/07 01:23

投稿

nyahonyaho
nyahonyaho

スコア83

test CHANGED
File without changes
test CHANGED
@@ -10,9 +10,37 @@
10
10
 
11
11
 
12
12
 
13
- ※Mainクラスにて↓を普通にnewしてpush・popを繰り返しているだけです
13
+ ```
14
14
 
15
+ public class Main {
16
+
17
+ public static void main(String[] args) {
18
+
19
+
20
+
21
+ Stack st = new Stack();
22
+
23
+ st.push("1");
24
+
25
+ st.push("2");
26
+
27
+ st.push("3");
28
+
29
+ Object o1 = st.pop();
30
+
31
+ Object o2 = st.pop();
32
+
33
+ Object o3 = st.pop();
34
+
15
- ```
35
+ }
36
+
37
+
38
+
39
+ }
40
+
41
+
42
+
43
+
16
44
 
17
45
  public class Stack {
18
46
 

3

a

2017/12/07 01:23

投稿

nyahonyaho
nyahonyaho

スコア83

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,4 @@
1
- eclipseNEONにて掲題のサンプルソースを組んで実行してみると、実行するたびにStackクラスのsizeが想定外の値になります。
1
+ eclipseNEON+Java8にて掲題のサンプルソースを組んで実行してみると、実行するたびにStackクラスのsizeが想定外の値になります。
2
2
 
3
3
 
4
4
 

2

a

2017/12/07 00:53

投稿

nyahonyaho
nyahonyaho

スコア83

test CHANGED
File without changes
test CHANGED
@@ -10,7 +10,7 @@
10
10
 
11
11
 
12
12
 
13
- Mainクラスにて↓を普通にnewしてpush・popを繰り返しているだけ
13
+ Mainクラスにて↓を普通にnewしてpush・popを繰り返しているだけです
14
14
 
15
15
  ```
16
16
 

1

a

2017/12/07 00:52

投稿

nyahonyaho
nyahonyaho

スコア83

test CHANGED
File without changes
test CHANGED
@@ -7,3 +7,65 @@
7
7
 
8
8
 
9
9
  原因はソース?eclipse?
10
+
11
+
12
+
13
+ Mainクラスにて↓を普通にnewしてpush・popを繰り返しているだけ
14
+
15
+ ```
16
+
17
+ public class Stack {
18
+
19
+ private Object[] elements;
20
+
21
+ private int size = 0;
22
+
23
+ private static final int DEFAULT_INITIAL_CAPACITY = 16;
24
+
25
+
26
+
27
+ public Stack () {
28
+
29
+ this.elements = new Object[DEFAULT_INITIAL_CAPACITY];
30
+
31
+ }
32
+
33
+
34
+
35
+ public void push (Object e) {
36
+
37
+ ensureCapacity();
38
+
39
+ elements[size++] = e;
40
+
41
+ }
42
+
43
+
44
+
45
+ public Object pop () {
46
+
47
+ if (size == 0) {
48
+
49
+ throw new EmptyStackException();
50
+
51
+ }
52
+
53
+ return elements[size--];
54
+
55
+ }
56
+
57
+
58
+
59
+ private void ensureCapacity() {
60
+
61
+ if (elements.length == size) {
62
+
63
+ elements = Arrays.copyOf(elements, 2 * size + 1);
64
+
65
+ }
66
+
67
+ }
68
+
69
+ }
70
+
71
+ ```