KaiquanMah commited on
Commit
aab9852
·
verified ·
1 Parent(s): 5c6ac75

r.nextInt(39)

Browse files
Week 3: Objects, files and exceptions/13b. Draw lottery numbers ADDED
@@ -0,0 +1,122 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ The following method definition is provided in the program:
2
+
3
+ ArrayList<Integer> lotterynumbers(Random r)
4
+
5
+ Write an implementation of the method that returns the lottery numbers in the list.
6
+ There are seven numbers, ranging from [1, 39].
7
+ The same number cannot appear twice in the list.
8
+
9
+
10
+ Example method call:
11
+ public static void main(String[] args){
12
+ Random rnd = new Random();
13
+ System.out.println(lotterynumbers(r));
14
+ System.out.println(lotterynumbers(r));
15
+ }
16
+
17
+ Example output:
18
+ [37, 14, 32, 20, 28, 21, 25]
19
+ [20, 6, 23, 30, 13, 11, 26]
20
+
21
+
22
+
23
+
24
+
25
+ ==================================
26
+
27
+
28
+
29
+ import java.util.Random;
30
+ import java.util.ArrayList;
31
+ import java.util.HashSet;
32
+
33
+ public class Test{
34
+ public static void main(String[] args){
35
+ final Random r = new Random();
36
+
37
+
38
+ System.out.println("Testing...");
39
+
40
+ ArrayList<Integer> nrot1 = lotterynumbers(r);
41
+ ArrayList<Integer> nrot2 = lotterynumbers(r);
42
+
43
+ System.out.println("Numbers: " + nrot1);
44
+ System.out.println("");
45
+
46
+
47
+
48
+ // check 7 numbers
49
+ System.out.print("Seven numbers in the list: ");
50
+ System.out.println(nrot1.size() == 7 ? "Ok" : "No");
51
+
52
+
53
+
54
+
55
+ // check 1-39
56
+ boolean limit = true;
57
+ for (int nro : nrot1) {
58
+ if (nro < 1 || nro > 39) limit = false;
59
+ }
60
+ System.out.print("Numbers between 1 and 39: ");
61
+ System.out.println(limit ? "Ok" : "No");
62
+
63
+
64
+
65
+ // check unique
66
+ HashSet<Integer> hs = new HashSet<>(nrot1);
67
+ boolean same = hs.size() == 7;
68
+ System.out.print("All numbers unique: ");
69
+ System.out.println(same ? "Ok" : "No");
70
+
71
+
72
+ // check both lists are different in content
73
+ boolean diff = !(nrot1.equals(nrot2));
74
+ System.out.print("Random numbers: ");
75
+ System.out.println(diff ? "Ok" : "No");
76
+
77
+
78
+
79
+ }
80
+
81
+
82
+
83
+ // RETURN a list of 7 integers
84
+ public static ArrayList<Integer> lotterynumbers(Random r) {
85
+ ArrayList<Integer> numbers = new ArrayList<>();
86
+
87
+ for (int i=0; i<7; i++) {
88
+ // r.nextInt(39) => generates 0 to 38
89
+ // +1 => adjusts the range to '1 to 39'
90
+ int nro = r.nextInt(39) + 1;
91
+
92
+ // check if number is unique - then add to the list
93
+ if (!numbers.contains(nro)) {
94
+ numbers.add(nro);
95
+ }
96
+ else {
97
+ // adjust idx 'i' back by 1 to generate a new number through the loop
98
+ i--;
99
+ }
100
+ }
101
+
102
+ return numbers;
103
+
104
+ }
105
+
106
+ }
107
+
108
+
109
+
110
+
111
+
112
+
113
+
114
+
115
+ Testing...
116
+ Numbers: [31, 4, 8, 3, 17, 32, 1]
117
+
118
+ Seven numbers in the list: Ok
119
+ Numbers between 1 and 39: Ok
120
+ All numbers unique: Ok
121
+ Random numbers: Ok
122
+