質問するログイン新規登録

回答編集履歴

1

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

2020/08/06 05:29

投稿

dodox86
dodox86

スコア9427

answer CHANGED
@@ -1,41 +1,76 @@
1
1
  色んな方法があります。簡単なものを3つほど。
2
+ ** ※回答へのコメントを受けてコードと実行例を追記、修正しています: 2020/08/06 14:28 **
2
3
 
3
4
  ```Java
4
5
  public class Main {
5
- public static void main(String[] args) {
6
+ public static void main(String[] args) {
6
- String s;
7
+ String s;
7
8
 
8
- // (1) 整数ならString.format()を使えば良い
9
+ // (1) 整数ならString.format()を使えば良い
9
- s = String.format("%08d", 12);
10
+ s = String.format("%08d", 12);
10
- System.out.println(s);
11
+ System.out.println(s);
11
12
 
12
- // (2) 文字列だったら あらかじめ頭に"00000000"を付けてから結合し、
13
+ // (2) 文字列だったら あらかじめ頭に"00000000"を付けてから結合し、
13
- // 後ろから8文字を取り出せばよい。
14
+ // 後ろから8文字を取り出せばよい。
14
- String sn = "123";
15
+ String sn = "123";
15
- s = "00000000" + sn;
16
+ s = "00000000" + sn;
16
- s = s.substring(s.length() - 8);
17
+ s = s.substring(s.length() - 8);
17
- System.out.println(s);
18
+ System.out.println(s);
18
19
 
19
- // (3) あくまでforを使いたいなら、足りない分、前に"0"を付けるべく、生成。
20
+ // (3) あくまでforを使いたいなら、足りない分、前に"0"を付けるべく、生成。
20
- sn = "78";
21
+ sn = "78";
21
- StringBuilder sb = new StringBuilder();
22
+ StringBuilder sb = new StringBuilder();
22
- for (int i = sn.length(); i < 8; i++) {
23
+ for (int i = sn.length(); i < 8; i++) {
23
- sb.append("0");
24
+ sb.append("0");
24
- }
25
+ }
25
- // 最後に追加する。
26
+ // 最後に追加する。
26
- sb.append(sn);
27
+ sb.append(sn);
27
- System.out.println(sb.toString());
28
+ System.out.println(sb.toString());
29
+
30
+ // ※ここから追記
31
+ // (4)
32
+ // 最後にStringBuilderからStringにするときに加工すれば、パターン全てに対応できる。
33
+ // s = sb.substring(sb.length() - 8);
34
+
35
+ // (4)-a 8文字に満たない場合
36
+ sn = "678";
37
+ sb = new StringBuilder();
38
+ for (int i = sn.length(); i < 8; i++) {
39
+ sb.append("0");
28
- }
40
+ }
41
+ sb.append(sn);
42
+ s = sb.substring(sb.length() - 8);
43
+ System.out.println("4-a: " + s);
44
+
45
+ // (4)-b ちょうど8文字の場合
46
+ sn = "12345678";
47
+ sb = new StringBuilder();
48
+ for (int i = sn.length(); i < 8; i++) {
49
+ sb.append("0");
50
+ }
51
+ sb.append(sn);
52
+ s = sb.substring(sb.length() - 8);
53
+ System.out.println("4-b: " + s);
54
+
55
+ // (4)-c 8文字を超える場合
56
+ sn = "123456789012345678";
57
+ sb = new StringBuilder();
58
+ for (int i = sn.length(); i < 8; i++) {
59
+ sb.append("0");
60
+ }
61
+ sb.append(sn);
62
+ s = sb.substring(sb.length() - 8);
63
+ System.out.println("4-c: " + s);
64
+ }
29
65
  }
30
66
  ```
31
67
 
32
68
  実行例です。
33
69
  ```sh
34
- $ javac Main.java
35
- $ java Main
36
70
  00000012
37
71
  00000123
38
72
  00000078
39
- $
73
+ 4-a: 00000678
40
-
74
+ 4-b: 12345678
75
+ 4-c: 12345678
41
76
  ```