Hi all, I'm new to java and here is my code. It runs, but the output is not what I wanted. This project allows the user to enter up to 6 lottery tickets and I have to generate random numbers 0-49. The number generate fine, but the number of tickets entered doesn't. If i enter two tickets, It'll still print out six. It should print out the number of tickets based on user input. Please help. Thank you. My teacher does not allow us to use arrays for this project. For extra credit we can use 2d arrays, but no arraylists. How would I rewrite this code just using 2d arrays?

import java.util.Collections;
import java.util.ArrayList;
import java.util.Scanner;

public class LotteryTest {
public static void main(String[] args){
Scanner input = new Scanner(System.in);
{

ArrayList<Integer> numbers = new ArrayList<Integer>();

System.out.println("Please enter the number of tickets you want");
int numtix = input.nextInt();

for(int i = 0; i <= 49; i++){ //loop to choose 
numbers.add(i+0);
}
for (int i=0; i<6; i++) { //loop for # of lottery tickets 
Collections.shuffle(numbers); //randomly shuffle elements of arraylist
System.out.print("\nLotto Ticket #"+(numtix)+": ");

for (int j=0; j<6; j++) { // determine how many numbers for each ticket
System.out.print(numbers.get(j) + " ");
}
}
}
}
}

Edited 4 Years Ago by ippo: add more

for (int i=0; i<6; i++) { //loop for # of lottery tickets

Above will always print 6 tickets as you set it to 6.

for (int i=0; i<numtix; i++) { //loop for # of lottery tickets

This will print the number of tickets you need from the input of the user.

for(int i = 0; i <= 49; i++){ //loop to choose 
   numbers.add(i+0);
}

Why do you do this?
Why not just?

for(int i = 0; i <= 49; i++){ //loop to choose 
   numbers.add(i);
}

My teacher does not allow us to use arrays for this project. For extra credit we can use 2d arrays, but no arraylists. How would I rewrite this code just using 2d arrays?

I am unclear with this statement. Why do you need to use a 2d array when your array only store 1 set of numbers for 1 purpose? If you want an easy way out, that uses 2d arrays, then why not do something dumb like:

for (int i = 0; i < 5 ; i++){
   for (int j = 0; j < 10; j++){
      numbers[i][j] = (i * 10) + j
   }
}

Oh thank you so much, I got it to work, and it was much more simple than I thought. As for the 2d array thing, it's just a separate assignment. She offered us extra credit to write a code that produces the same output , but instead of using arraylists we can only use 2d arrays. A minor problem would be limiting the number of tickets a user can enter. The limit should be 6, how would I do that?

Edited 4 Years Ago by ippo

You can do something like this:

System.out.println("Please enter the number of tickets you want");
int numtix = 0;

while (true){
    numtix = input.nextInt();
    if (numtix <= 6 && numtix >= 0){
        break;
    }

    System.out.println("Max number of tickets you can purchase is 6.\nPlease enter the number of tickets you want");

}

Nevermind I got it! Thanks a lot!. Now to do this with only 2d arrays...

Edited 4 Years Ago by ippo

Is there a method to make the output of the numbers in numerical order?

If you have "n" tickets each with "m" numbers on it, you can represent that as a 2D array [n][m] ...
The Collections class has methods you can use to sort a list of numbers into order...

Edited 4 Years Ago by JamesCherrill

This question has already been answered. Start a new discussion instead.