質問編集履歴

5

追記のコードを編集しました

2022/06/21 06:02

投稿

tuka
tuka

スコア13

test CHANGED
File without changes
test CHANGED
@@ -97,14 +97,6 @@
97
97
  import java.util.Arrays;
98
98
  import java.util.Random;
99
99
 
100
- class ThreadLearnsss extends Thread {
101
- public void run() {
102
- for (int i = 0; i < 30; i++) {
103
- // i.getId();
104
- }
105
- }
106
- }
107
-
108
100
  class mains {
109
101
  public static void main(String[] args) {
110
102
  Thread[] th = new Thread[30];
@@ -119,10 +111,9 @@
119
111
  calendar.setTime(date);
120
112
  Date d1 = calendar.getTime();
121
113
  calendar.add(Calendar.SECOND, nums[i]);
122
- for (Thread s : th) {
114
+
123
- System.out.printf("%d %s %s %s %d %s %s\n", s.getId(), "start", sdf.format(date), "wait",
115
+ System.out.printf("%d %s %s %s %d %s %s\n", th[i].getId(), "start", sdf.format(date), "wait",
124
- nums[i], sdf.format(d1), "end");
116
+ nums[i], sdf.format(d1), "end");
125
- }
126
117
  }
127
118
 
128
119
  for (Thread t : th) {

4

追記のコードを修正しなおしました

2022/06/21 04:26

投稿

tuka
tuka

スコア13

test CHANGED
File without changes
test CHANGED
@@ -107,35 +107,31 @@
107
107
 
108
108
  class mains {
109
109
  public static void main(String[] args) {
110
- for (int h = 0; h < 30; h++) {
111
- Thread[] th = new Thread[30];
110
+ Thread[] th = new Thread[30];
112
- Date date = new Date();
111
+ Date date = new Date();
113
- SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
112
+ SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
114
- Calendar calendar = Calendar.getInstance();
113
+ Calendar calendar = Calendar.getInstance();
114
+ int[] nums = new Random().ints(30, 2, 11).toArray();
115
+ Arrays.sort(nums);
116
+ for (int i = 0; i < 30; i++) {
117
+ th[i] = new Thread();
118
+ th[i].start();
119
+ calendar.setTime(date);
120
+ Date d1 = calendar.getTime();
121
+ calendar.add(Calendar.SECOND, nums[i]);
115
122
  for (Thread s : th) {
116
- s.start();
117
- int[] nums = new Random().ints(30, 2, 11).toArray();
118
- Arrays.sort(nums);
119
- for (int i = 0; i < 30; i++) {
120
- th[i] = new Thread();
121
- th[i].start();
122
- calendar.setTime(date);
123
- Date d1 = calendar.getTime();
124
- calendar.add(Calendar.SECOND, nums[i]);
125
- System.out.printf("%d %s %s %s %d %s %s\n", s.getId(), "start", sdf.format(date), "wait",
123
+ System.out.printf("%d %s %s %s %d %s %s\n", s.getId(), "start", sdf.format(date), "wait",
126
- nums[i], sdf.format(d1), "end");
124
+ nums[i], sdf.format(d1), "end");
127
- }
125
+ }
126
+ }
128
127
 
129
- }
130
-
131
- for (Thread t : th) {
128
+ for (Thread t : th) {
132
- try {
129
+ try {
133
- t.join();
130
+ t.join();
134
- } catch (InterruptedException e) {
131
+ } catch (InterruptedException e) {
135
- System.out.println(e);
132
+ System.out.println(e);
136
- } finally {
133
+ } finally {
137
- System.out.printf("%s", "program end");
134
+ System.out.printf("%s", "program end");
138
- }
139
135
  }
140
136
  }
141
137
  }

3

追記でコードを並べ替えました

2022/06/21 03:49

投稿

tuka
tuka

スコア13

test CHANGED
File without changes
test CHANGED
@@ -89,3 +89,56 @@
89
89
  ```
90
90
  ### 試したこと
91
91
  Arrays.sort(nums);とSystem.out.printfをfor文の外に出した。当然ですがSystem.out.printfのnums[i]がエラーになる
92
+ ### 追記
93
+ ```java
94
+ import java.util.Calendar;
95
+ import java.text.SimpleDateFormat;
96
+ import java.util.Date;
97
+ import java.util.Arrays;
98
+ import java.util.Random;
99
+
100
+ class ThreadLearnsss extends Thread {
101
+ public void run() {
102
+ for (int i = 0; i < 30; i++) {
103
+ // i.getId();
104
+ }
105
+ }
106
+ }
107
+
108
+ class mains {
109
+ public static void main(String[] args) {
110
+ for (int h = 0; h < 30; h++) {
111
+ Thread[] th = new Thread[30];
112
+ Date date = new Date();
113
+ SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
114
+ Calendar calendar = Calendar.getInstance();
115
+ for (Thread s : th) {
116
+ s.start();
117
+ int[] nums = new Random().ints(30, 2, 11).toArray();
118
+ Arrays.sort(nums);
119
+ for (int i = 0; i < 30; i++) {
120
+ th[i] = new Thread();
121
+ th[i].start();
122
+ calendar.setTime(date);
123
+ Date d1 = calendar.getTime();
124
+ calendar.add(Calendar.SECOND, nums[i]);
125
+ System.out.printf("%d %s %s %s %d %s %s\n", s.getId(), "start", sdf.format(date), "wait",
126
+ nums[i], sdf.format(d1), "end");
127
+ }
128
+
129
+ }
130
+
131
+ for (Thread t : th) {
132
+ try {
133
+ t.join();
134
+ } catch (InterruptedException e) {
135
+ System.out.println(e);
136
+ } finally {
137
+ System.out.printf("%s", "program end");
138
+ }
139
+ }
140
+ }
141
+ }
142
+ }
143
+
144
+ ```

2

出力結果を追加しました

2022/06/20 23:26

投稿

tuka
tuka

スコア13

test CHANGED
File without changes
test CHANGED
@@ -53,5 +53,39 @@
53
53
  }
54
54
 
55
55
  ```
56
+ ### 出力
57
+ ```java
58
+ 15 start 08:25:53 wait 5 08:25:58 end
59
+ 16 start 08:25:53 wait 3 08:25:56 end
60
+ 17 start 08:25:53 wait 5 08:25:58 end
61
+ 18 start 08:25:53 wait 9 08:26:02 end
62
+ 19 start 08:25:53 wait 7 08:26:00 end
63
+ 20 start 08:25:53 wait 8 08:26:01 end
64
+ 21 start 08:25:53 wait 4 08:25:57 end
65
+ 22 start 08:25:53 wait 7 08:26:00 end
66
+ 23 start 08:25:53 wait 6 08:25:59 end
67
+ 24 start 08:25:53 wait 2 08:25:55 end
68
+ 25 start 08:25:53 wait 2 08:25:55 end
69
+ 26 start 08:25:53 wait 4 08:25:57 end
70
+ 27 start 08:25:53 wait 2 08:25:55 end
71
+ 28 start 08:25:53 wait 7 08:26:00 end
72
+ 29 start 08:25:53 wait 6 08:25:59 end
73
+ 30 start 08:25:53 wait 7 08:26:00 end
74
+ 31 start 08:25:53 wait 10 08:26:03 end
75
+ 32 start 08:25:53 wait 9 08:26:02 end
76
+ 33 start 08:25:53 wait 2 08:25:55 end
77
+ 34 start 08:25:53 wait 6 08:25:59 end
78
+ 35 start 08:25:53 wait 9 08:26:02 end
79
+ 36 start 08:25:53 wait 7 08:26:00 end
80
+ 37 start 08:25:53 wait 10 08:26:03 end
81
+ 38 start 08:25:53 wait 7 08:26:00 end
82
+ 39 start 08:25:53 wait 4 08:25:57 end
83
+ 40 start 08:25:53 wait 8 08:26:01 end
84
+ 41 start 08:25:53 wait 4 08:25:57 end
85
+ 42 start 08:25:53 wait 9 08:26:02 end
86
+ 43 start 08:25:53 wait 3 08:25:56 end
87
+ 44 start 08:25:53 wait 8 08:26:01 end
88
+ program end
89
+ ```
56
90
  ### 試したこと
57
91
  Arrays.sort(nums);とSystem.out.printfをfor文の外に出した。当然ですがSystem.out.printfのnums[i]がエラーになる

1

該当コードに一部ではなく全てのプログラムを提示しました。

2022/06/20 14:24

投稿

tuka
tuka

スコア13

test CHANGED
File without changes
test CHANGED
@@ -1,6 +1,19 @@
1
1
  以下のようなコードを書いて実行したのですが、乱数がばらばらに表示してしまいます。配列に格納して昇順に出力したいのですが、どなたか解決方法教えてください。
2
2
  ### 該当コード
3
3
  ```java
4
+ import java.util.Calendar;
5
+ import java.text.SimpleDateFormat;
6
+ import java.util.Date;
7
+ import java.util.Arrays;
8
+ import java.util.Random;
9
+
10
+ class ThreadLearnss extends Thread {
11
+ public void run() {
12
+ for (int i = 0; i < 30; i++) {
13
+ }
14
+ }
15
+ }
16
+
4
17
  class mains {
5
18
  public static void main(String[] args) {
6
19
  for (int h = 0; h < 30; h++) {
@@ -25,6 +38,20 @@
25
38
  }
26
39
 
27
40
  }
41
+
42
+ for (Thread t : th) {
43
+ try {
44
+ t.join();
45
+ } catch (InterruptedException e) {
46
+ System.out.println(e);
47
+ } finally {
48
+ System.out.printf("%s", "program end");
49
+ }
50
+ }
51
+ }
52
+ }
53
+ }
54
+
28
55
  ```
29
56
  ### 試したこと
30
57
  Arrays.sort(nums);とSystem.out.printfをfor文の外に出した。当然ですがSystem.out.printfのnums[i]がエラーになる