Aprovecha la POO, no hagas todo en el main. Así tendrás un código limpio, y fácil de mantener.
Código
import java.util.Random; import java.util.Scanner; public class Loteria { int choice; int[] tickets; int[] yourTickets; int matched; public Loteria(){ Jugar instance = new Jugar(); instance.start(); } void generar_tickets(int eleccion){ tickets = new int[59]; yourTickets = new int[eleccion]; int i; // Generate list of numbers for(i = 0; i < tickets.length; i++) { tickets[i] = generateNumbers.nextInt(60); } // Give him his tickets for (i = 0; i < yourTickets.length; i++) { yourTickets[i] = generateNumbers.nextInt(60); } } // fin metodo void comparar(){ // Check if something matched for(int i = 0; i < yourTickets.length; i++) { for(int j = 0; j < tickets.length; j++) { if (yourTickets[i] == tickets[j]) { matched++; } } } // Make a pause try { } switch (matched) { case 1: break; case 2: break; case 3: break; case 4: break; case 5: break; case 0: break; default: } } // fin metodo boolean jugar_denuevo() { // Ask if he wants to try again if(tryAgain.compareToIgnoreCase("x") == 0) { return false; } else { // Just clear screen for (int l = 0; l < 1000; l++) { } return true; } }// fin metodo // clase que empieza el juego mediante thread private boolean continuar=true; //condicion del thread public void run() { // incia el thread while(continuar) { // hace la tarea mientras continuar sea true try { choice = keyboard.nextInt(); if (choice == 0) { } generar_tickets(choice); comparar(); continuar = jugar_denuevo(); } } } } } new Loteria(); } } // fin.
He modificado tu método para jugar de nuevo. Para que lee devuelva true o false a la condición del while del thread. Si se elige un caracter que no sea X, devuelve true a la variable de condición y se seguirá jugando. De lo contrario, saldrá del juego.
Prueba el code y me comentas. Un saludo.