I need help making the following code so that you can pick your own lottery numb
ID: 3878557 • Letter: I
Question
I need help making the following code so that you can pick your own lottery numbers and the random winning numbers that are picked each week are shown
import java.util.*;
enum lottryDays {
WED, SAT
}
public class Megabucks
{
private static int winning_count = 0;
public static int weeks = 52;
public static int randomNumber() {
return (int) (1 + 41 * Math.random());
}
public static void main(String[] args) {
List<Integer> patronsNumber = new ArrayList<>();
while(patronsNumber.size()!=6) {
int number = randomNumber();
if(patronsNumber.contains(number)) {
}else {
patronsNumber.add(number);
}
}
System.out.println("Patrons number are " + patronsNumber);
for (int i = 0; i < weeks; i++) {
for (lottryDays val : lottryDays.values()) {
MegaBucksRC draw = new MegaBucksRC();
if (draw.hasWon(patronsNumber)) {
winning_count++;
System.out.println("6 of 42");
} else {
String res = draw.matches(patronsNumber)+" of 6 Numbers";
if(draw.containsBonusNumber(patronsNumber)) {
res = res+"+bonus number";
}
System.out.println(res);
}
}
}
System.out.println("Lotteries Won: "+winning_count);
}
}
import java.util.*;
public class MegaBucksRC {
private int[] frequencyArray = new int[42];
private ArrayList<Integer> numbers = new ArrayList<>();
public MegaBucksRC() {
while (numbers.size() != 7) {
int number = randomNumber();
if (!numbers.contains(number)) {
if (numbers.size() < 6) {
updateFrequency(number);
}
numbers.add(number);
}
}
}
private void updateFrequency(int i) {
frequencyArray[i] = 1;
}
private int randomNumber() {
return (int) (1 + 41 * Math.random());
}
public int matches(List<Integer> patronsNumber) {
int count = 0;
boolean res = false;
for (int i = 0; i < patronsNumber.size(); i++) {
if (patronsNumber.contains(numbers.get(i))) {
count++;
}
}
return count;
}
public boolean containsBonusNumber(List<Integer> patronsNumber) {
return patronsNumber.contains(numbers.get(6));
}
public boolean hasWon(List<Integer> patronsNumber) {
boolean res = false;
if(matches(patronsNumber)==6) {
res = true;
}else if(matches(patronsNumber)==5 && containsBonusNumber(patronsNumber)) {
res = true;
}else {
res = false;
}
return res;
}
public List numbers() {
return numbers;
}
}
Explanation / Answer
Hello, I have a solution for you. Modfied the code (MegaBucks.java only) to let the user choose 6 numbers between 1 and 42 instead of generating a random number.
//MegaBucks.java
import java.util.*;
enum lottryDays {
WED, SAT
}
public class Megabucks {
static Scanner scanner;
private static int winning_count = 0;
public static int weeks = 52;
public static int randomNumber() {
return (int) (1 + 41 * Math.random());
}
public static void main(String[] args) {
/**
* Initializing scanner object to get user input
*/
scanner = new Scanner(System.in);
ArrayList<Integer> patronsNumber = new ArrayList<Integer>();
while (patronsNumber.size() != 6) {
/**
* Changing code to get input from user
*/
int number = getPatronNumber();
if (patronsNumber.contains(number)) {
System.out
.println("You already entered this number, choose a different one");
} else {
patronsNumber.add(number);
}
}
System.out.println("Patrons number are " + patronsNumber);
for (int i = 0; i < weeks; i++) {
for (lottryDays val : lottryDays.values()) {
MegaBucksRC draw = new MegaBucksRC();
if (draw.hasWon(patronsNumber)) {
winning_count++;
System.out.println("6 of 6");
} else {
String res = draw.matches(patronsNumber) + " of 6 Numbers";
if (draw.containsBonusNumber(patronsNumber)) {
res = res + "+bonus number";
}
System.out.println(res);
}
}
}
System.out.println("Lotteries Won: " + winning_count);
}
/**
* method to let the user choose the patron numbers. Will fetch one number
* between 1 and 42 and returns it
*/
public static int getPatronNumber() {
try {
System.out.println("Enter a number between 1 and 42");
int number = Integer.parseInt(scanner.nextLine());
if (number >= 1 && number <= 42) {
return number;
} else {
System.out.println("Number should be between 1 and 42");
return getPatronNumber();
}
} catch (Exception e) {
System.out.println("Invalid input, try again");
return getPatronNumber();
}
}
}
//MegaBucksRC.java
import java.util.ArrayList;
import java.util.List;
public class MegaBucksRC {
private int[] frequencyArray = new int[42];
private ArrayList<Integer> numbers = new ArrayList<Integer>();
public MegaBucksRC() {
while (numbers.size() != 7) {
int number = randomNumber();
if (!numbers.contains(number)) {
if (numbers.size() < 6) {
updateFrequency(number);
}
numbers.add(number);
}
}
}
private void updateFrequency(int i) {
frequencyArray[i] = 1;
}
private int randomNumber() {
return (int) (1 + 41 * Math.random());
}
public int matches(List<Integer> patronsNumber) {
int count = 0;
boolean res = false;
for (int i = 0; i < patronsNumber.size(); i++) {
if (patronsNumber.contains(numbers.get(i))) {
count++;
}
}
return count;
}
public boolean containsBonusNumber(List<Integer> patronsNumber) {
return patronsNumber.contains(numbers.get(6));
}
public boolean hasWon(List<Integer> patronsNumber) {
boolean res = false;
if (matches(patronsNumber) == 6) {
res = true;
} else if (matches(patronsNumber) == 5
&& containsBonusNumber(patronsNumber)) {
res = true;
} else {
res = false;
}
return res;
}
public List numbers() {
return numbers;
}
}
/*OUTPUT*/
Enter a number between 1 and 42
11
Enter a number between 1 and 42
26
Enter a number between 1 and 42
7
Enter a number between 1 and 42
33
Enter a number between 1 and 42
44
Number should be between 1 and 42
Enter a number between 1 and 42
42
Enter a number between 1 and 42
12
Patrons number are [11, 26, 7, 33, 42, 12]
1 of 6 Numbers
0 of 6 Numbers
1 of 6 Numbers
1 of 6 Numbers
0 of 6 Numbers
0 of 6 Numbers
0 of 6 Numbers
1 of 6 Numbers
1 of 6 Numbers
1 of 6 Numbers
2 of 6 Numbers
1 of 6 Numbers
0 of 6 Numbers
0 of 6 Numbers
1 of 6 Numbers
0 of 6 Numbers
1 of 6 Numbers
2 of 6 Numbers
0 of 6 Numbers
1 of 6 Numbers
0 of 6 Numbers
1 of 6 Numbers
0 of 6 Numbers+bonus number
2 of 6 Numbers
1 of 6 Numbers
1 of 6 Numbers
0 of 6 Numbers+bonus number
1 of 6 Numbers
1 of 6 Numbers
2 of 6 Numbers
3 of 6 Numbers
0 of 6 Numbers
0 of 6 Numbers
0 of 6 Numbers+bonus number
1 of 6 Numbers+bonus number
0 of 6 Numbers
0 of 6 Numbers
2 of 6 Numbers
0 of 6 Numbers
1 of 6 Numbers
0 of 6 Numbers
0 of 6 Numbers
0 of 6 Numbers
0 of 6 Numbers
1 of 6 Numbers+bonus number
0 of 6 Numbers
1 of 6 Numbers
0 of 6 Numbers
0 of 6 Numbers
0 of 6 Numbers
3 of 6 Numbers
0 of 6 Numbers
1 of 6 Numbers+bonus number
2 of 6 Numbers
1 of 6 Numbers
0 of 6 Numbers
0 of 6 Numbers
1 of 6 Numbers
0 of 6 Numbers
0 of 6 Numbers+bonus number
1 of 6 Numbers
0 of 6 Numbers
0 of 6 Numbers
1 of 6 Numbers
1 of 6 Numbers
0 of 6 Numbers+bonus number
0 of 6 Numbers+bonus number
1 of 6 Numbers
1 of 6 Numbers
1 of 6 Numbers
0 of 6 Numbers
1 of 6 Numbers
2 of 6 Numbers
1 of 6 Numbers
0 of 6 Numbers+bonus number
1 of 6 Numbers
2 of 6 Numbers
0 of 6 Numbers
1 of 6 Numbers
1 of 6 Numbers+bonus number
0 of 6 Numbers
0 of 6 Numbers
1 of 6 Numbers
2 of 6 Numbers
0 of 6 Numbers
2 of 6 Numbers
0 of 6 Numbers
0 of 6 Numbers
1 of 6 Numbers
0 of 6 Numbers
0 of 6 Numbers
3 of 6 Numbers
1 of 6 Numbers
1 of 6 Numbers
1 of 6 Numbers
2 of 6 Numbers
1 of 6 Numbers
2 of 6 Numbers
2 of 6 Numbers
1 of 6 Numbers
1 of 6 Numbers
2 of 6 Numbers
1 of 6 Numbers
0 of 6 Numbers
Lotteries Won: 0
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.