Java - sprawdzenie za którym razem użytkownik trafi na swoje liczby

0

Poniższy kod programu polega na tym, że program losuje 6 liczb z 49 po wpisaniu przez użytkownika wybranych liczb.
Trzeba uzupełnić tak program, aby losował 6 liczb aż będą zgadzały się z liczbami użytkownika oraz użytkownik musi być poinformowany za którym razem zostały wylosowane jego liczby.
Nie wiem kompletnie jak to zrobić! Proszę o pomoc.

import java.util.Random;
import java.util.Scanner;
import static javax.swing.JOptionPane.showInputDialog;
import static javax.swing.JOptionPane.showMessageDialog;

public class Liczby {

  public static void main(String[] args) {
    String msg = "Podaj magiczne liczby,\n" +
                 "lub wybierz Cancel, by skończyć losowania";
    
    Random rand;                          

    boolean[] isDrawn = new boolean[49];  
                                            
    int liczbaUzytkownika =0; 
    String inp;
    while ((inp = showInputDialog(msg)) != null) {

      if (!inp.equals("")) { 
         Scanner sc = new Scanner(inp);
         while (sc.hasNextInt()) {
             liczbaUzytkownika = sc.nextInt();
             System.out.println("Uzytkownik wprowadzil liczby: "+liczbaUzytkownika);
         }
      }
     rand = new Random();  

      
      
      
     int[] liczbyWylosowane = new int[6];
      // Losowanie

      final int ILE = 6;  
      int k = 0;          

      String out = "";   
      while (k < ILE) {
        int n = rand.nextInt(49);  
        if (isDrawn[n]) continue;  
        else {                    
          liczbyWylosowane[k]=n+1;
          k++;                     
          isDrawn[n] = true;       
          out += " " + (n+1);      
        }
      }
      
      System.out.println("Liczby wylosowane:");
      for (int liczbaWylosowana: liczbyWylosowane) System.out.print(" "+liczbaWylosowana);
      showMessageDialog(null, "Wylosowane liczby:\n" + out);
    }
  }
  

}
0

Po pierwsze, musisz zapamiętać liczby wprowadzone przez użytkownika.
Po drugie, nie napisałeś czy program losując sześć liczb musi wylosować sześć różnych liczb.
Ponieważ już dodałeś znaczniki :P (i kod da się czytać), to masz rozwiązanie. Podczas wczytywania nie ma kontroli czy użytkownik wpisuje liczby, po wczytaniu jest kontrola czy wpisał 6 różnych liczb i czy liczby są z zakresu 1-49. Losowanych jest zawsze 6 różnych liczb. Zazwyczaj trzeba powtórzyć losowanie kilkanaście milionów razy.

import java.util.*;

public class Liczby 
{

    public static void main(String[] args) 
    {
        Random rand;                          

        int liczbyUzytkownika[] = new int[6];
        int liczbyWylosowane[] = new int[6];          
        Scanner sc = new Scanner(System.in);
        int i = 0;
        System.out.println("Podaj 6 roznych liczb z przedzialu [1,49]");
        while (i<6) 
        {
            System.out.println("Liczba numer "+(i+1));
            liczbyUzytkownika[i++] = sc.nextInt();
        }
        Arrays.sort(liczbyUzytkownika);
        boolean ok = true;
        for(i=0;i<6;i++)
        {
            System.out.print(liczbyUzytkownika[i]+((i==5)?"\n":","));
            if(liczbyUzytkownika[i]<1 || liczbyUzytkownika[i]>49)
            {
                ok = false;
            }
            if(i < 5 && (liczbyUzytkownika[i] == liczbyUzytkownika[i+1]))
            {
                ok = false;
            }
        }
        if(!ok)
        {
            System.exit(0);
        }
        
        ArrayList<Integer> liczby = new ArrayList<Integer>();
        for(i = 1;i<=49;i++)
        {
            liczby.add(i);
        }         
        int counter = 0;
        while(true)
        {
            counter++;
            Collections.shuffle(liczby);
            for(i=0;i<6;i++)
            {
                liczbyWylosowane[i] = liczby.get(i);
            }
            Arrays.sort(liczbyWylosowane);
            boolean zgodne = true;
            for(i=0;i<6;i++)
            {
                zgodne = zgodne && liczbyWylosowane[i] == liczbyUzytkownika[i];
            }
            if(zgodne)
            {
                System.out.println(counter);
                break;
            }
        }
    }
}

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.