質問編集履歴

1

知識不足で申し訳ないのですが、知りたいところを詳しくしたので細かく(できればソースコードを)教えていただけると助かります。

2020/05/28 03:41

投稿

java_0527
java_0527

スコア4

test CHANGED
@@ -1 +1 @@
1
- 数字、英語大文字、英語小文字ぞれ最低1文字含ませた8ケタのパードを生成するプログラム” Java
1
+ 条件満たさなけば繰り返すソーード” Java
test CHANGED
@@ -1,12 +1,10 @@
1
- # ”数字、英語大文字、英語小文字ぞれ最低1文字含ませた8ケタのパードを生成するプログラム”
1
+ #条件満たさなけば繰り返すソーード Java
2
2
 
3
- java利用してつくりたいです。
3
+ ”数字、英語大文字、英語小文字それぞれ最低1文字含ませた8ケタのパスワード生成するプログラム”を作りたいですが、~~で囲まれている範囲を”数字、英語大文字、英語小文字をそれぞれ最低1文字含んでいなければパスワードを再作成する”ようにしたいです
4
4
 
5
5
 
6
6
 
7
7
 
8
-
9
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
10
8
 
11
9
  import java.util.Random;
12
10
 
@@ -16,108 +14,104 @@
16
14
 
17
15
 
18
16
 
19
- public static void main(String[] args) {
17
+ public static void main(String[] args) {
20
18
 
21
19
 
22
20
 
23
- int length = 8;
21
+ int length = 8;
24
22
 
25
- boolean useSign = false;
23
+ boolean useSign = false;
26
24
 
27
- String style = "normal";
25
+ String style = "normal";
28
26
 
29
27
 
30
28
 
31
- StringBuilder result = new StringBuilder();
29
+ StringBuilder result = new StringBuilder();
32
-
33
-
34
-
35
- StringBuilder source = new StringBuilder();
36
-
37
-
38
-
39
- for (int i = 0x30; i < 0x3A; i++) {
40
-
41
- source.append((char) i);
42
-
43
- }
44
-
45
-
46
-
47
- if (useSign) {
48
-
49
- for (int i = 0x21; i < 0x30; i++) {
50
-
51
- source.append((char) i);
52
-
53
- }
54
-
55
- }
56
-
57
-
58
-
59
- switch (style) {
60
-
61
- case "lowerCase":
62
-
63
- break;
64
-
65
- default:
66
-
67
- for (int i = 0x41; i < 0x5b; i++) {
68
-
69
- source.append((char) i);
70
-
71
- }
72
-
73
- break;
74
-
75
- }
76
-
77
-
78
-
79
- switch (style) {
80
-
81
- case "upperCase":
82
-
83
- break;
84
-
85
- default:
86
-
87
- for (int i = 0x61; i < 0x7b; i++) {
88
-
89
- source.append((char) i);
90
-
91
- }
92
-
93
- break;
94
-
95
- }
96
30
 
97
31
 
98
32
 
99
- int sourceLength = source.length();
33
+ StringBuilder source = new StringBuilder();
100
34
 
101
- Random random = new Random();
102
35
 
103
- while (result.length() < length) {
104
36
 
105
- result.append(source.charAt(Math.abs(random.nextInt()) % sourceLength));
37
+ for (int i = 0x30; i < 0x3A; i++) {
106
38
 
107
- }
108
-
109
-
110
-
111
- System.out.format("%1$s", result);
39
+ source.append((char) i);
112
-
113
- }
114
40
 
115
41
  }
116
42
 
117
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
118
43
 
44
+
45
+ if (useSign) {
46
+
119
- 英数字を利用した8ケタのパスワードを出力するまではできたのですが、数字を含まない場合があります。
47
+ for (int i = 0x21; i < 0x30; i++) {
48
+
49
+ source.append((char) i);
50
+
51
+ }
52
+
53
+ }
120
54
 
121
55
 
122
56
 
57
+ switch (style) {
58
+
59
+ case "lowerCase":
60
+
61
+ break;
62
+
63
+ default:
64
+
65
+ for (int i = 0x41; i < 0x5b; i++) {
66
+
67
+ source.append((char) i);
68
+
69
+ }
70
+
71
+ break;
72
+
73
+ }
74
+
75
+
76
+
77
+ switch (style) {
78
+
79
+ case "upperCase":
80
+
81
+ break;
82
+
83
+ default:
84
+
85
+ for (int i = 0x61; i < 0x7b; i++) {
86
+
87
+ source.append((char) i);
88
+
89
+ }
90
+
91
+ break;
92
+
93
+ }
94
+
95
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
96
+
97
+ int sourceLength = source.length();
98
+
99
+ Random random = new Random();
100
+
123
- これに何を足せばいいのでしょうか、または別のプログラムがいいのでしょうか?
101
+ while (result.length() < length) {
102
+
103
+ result.append(source.charAt(Math.abs(random.nextInt()) % sourceLength));
104
+
105
+ }
106
+
107
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
108
+
109
+ System.out.format("%1$s", result);
110
+
111
+ }
112
+
113
+ }
114
+
115
+
116
+
117
+ 知識不足のため、できるだけ詳しく教えていただけると助かります。よろしくお願いします。