回答編集履歴

1

回答へのコメントを受けて追記、修正。

2020/08/06 05:29

投稿

dodox86
dodox86

スコア9183

test CHANGED
@@ -1,4 +1,6 @@
1
1
  色んな方法があります。簡単なものを3つほど。
2
+
3
+ ** ※回答へのコメントを受けてコードと実行例を追記、修正しています: 2020/08/06 14:28 **
2
4
 
3
5
 
4
6
 
@@ -6,53 +8,123 @@
6
8
 
7
9
  public class Main {
8
10
 
9
- public static void main(String[] args) {
11
+ public static void main(String[] args) {
10
12
 
11
- String s;
13
+ String s;
12
14
 
13
15
 
14
16
 
15
- // (1) 整数ならString.format()を使えば良い
17
+ // (1) 整数ならString.format()を使えば良い
16
18
 
17
- s = String.format("%08d", 12);
19
+ s = String.format("%08d", 12);
18
20
 
19
- System.out.println(s);
21
+ System.out.println(s);
20
22
 
21
23
 
22
24
 
23
- // (2) 文字列だったら あらかじめ頭に"00000000"を付けてから結合し、
25
+ // (2) 文字列だったら あらかじめ頭に"00000000"を付けてから結合し、
24
26
 
25
- // 後ろから8文字を取り出せばよい。
27
+ // 後ろから8文字を取り出せばよい。
26
28
 
27
- String sn = "123";
29
+ String sn = "123";
28
30
 
29
- s = "00000000" + sn;
31
+ s = "00000000" + sn;
30
32
 
31
- s = s.substring(s.length() - 8);
33
+ s = s.substring(s.length() - 8);
32
34
 
33
- System.out.println(s);
35
+ System.out.println(s);
34
36
 
35
37
 
36
38
 
37
- // (3) あくまでforを使いたいなら、足りない分、前に"0"を付けるべく、生成。
39
+ // (3) あくまでforを使いたいなら、足りない分、前に"0"を付けるべく、生成。
38
40
 
39
- sn = "78";
41
+ sn = "78";
40
42
 
41
- StringBuilder sb = new StringBuilder();
43
+ StringBuilder sb = new StringBuilder();
42
44
 
43
- for (int i = sn.length(); i < 8; i++) {
45
+ for (int i = sn.length(); i < 8; i++) {
44
46
 
45
- sb.append("0");
47
+ sb.append("0");
46
48
 
47
- }
49
+ }
48
50
 
49
- // 最後に追加する。
51
+ // 最後に追加する。
50
52
 
51
- sb.append(sn);
53
+ sb.append(sn);
52
54
 
53
- System.out.println(sb.toString());
55
+ System.out.println(sb.toString());
54
56
 
57
+
58
+
59
+ // ※ここから追記
60
+
61
+ // (4)
62
+
63
+ // 最後にStringBuilderからStringにするときに加工すれば、パターン全てに対応できる。
64
+
65
+ // s = sb.substring(sb.length() - 8);
66
+
67
+
68
+
69
+ // (4)-a 8文字に満たない場合
70
+
71
+ sn = "678";
72
+
73
+ sb = new StringBuilder();
74
+
75
+ for (int i = sn.length(); i < 8; i++) {
76
+
77
+ sb.append("0");
78
+
55
- }
79
+ }
80
+
81
+ sb.append(sn);
82
+
83
+ s = sb.substring(sb.length() - 8);
84
+
85
+ System.out.println("4-a: " + s);
86
+
87
+
88
+
89
+ // (4)-b ちょうど8文字の場合
90
+
91
+ sn = "12345678";
92
+
93
+ sb = new StringBuilder();
94
+
95
+ for (int i = sn.length(); i < 8; i++) {
96
+
97
+ sb.append("0");
98
+
99
+ }
100
+
101
+ sb.append(sn);
102
+
103
+ s = sb.substring(sb.length() - 8);
104
+
105
+ System.out.println("4-b: " + s);
106
+
107
+
108
+
109
+ // (4)-c 8文字を超える場合
110
+
111
+ sn = "123456789012345678";
112
+
113
+ sb = new StringBuilder();
114
+
115
+ for (int i = sn.length(); i < 8; i++) {
116
+
117
+ sb.append("0");
118
+
119
+ }
120
+
121
+ sb.append(sn);
122
+
123
+ s = sb.substring(sb.length() - 8);
124
+
125
+ System.out.println("4-c: " + s);
126
+
127
+ }
56
128
 
57
129
  }
58
130
 
@@ -64,18 +136,16 @@
64
136
 
65
137
  ```sh
66
138
 
67
- $ javac Main.java
68
-
69
- $ java Main
70
-
71
139
  00000012
72
140
 
73
141
  00000123
74
142
 
75
143
  00000078
76
144
 
77
- $
145
+ 4-a: 00000678
78
146
 
147
+ 4-b: 12345678
79
148
 
149
+ 4-c: 12345678
80
150
 
81
151
  ```