Bardzo proszę o pomoc!
Poniższy fragment kod programu jest do losowanie 6 liczb z 49. Użytkownik wpisuje swoje liczby a program losuje aż będą takie same jak użytkownika i podaje za którym razem wylosował te liczby.
Teraz program ma losować jedną liczbę od 1 do 100. Użytkownik podaje swoją i program losuje liczbę. Program po wylosowaniu liczby musi podać czy liczba użytkownika była za mała czy za duża (musi być komentarz), a jeśli trafiona to komentarz np. brawo udało się. Program również musi podać przy której próbie udało się wylosować taką samą liczbę jak użytkownika.
do{
out = "";
while (k < ILE) {
int n = rand.nextInt(49); // losowanie: 0 <= n < 49
if (isDrawn[n])
continue; // jeżeli ta liczba już była wylosowana
else { // nie byĹła - bierzemy ją
liczbyWylosowane[k] = n + 1;
k++; // licznik wziętych + 1
isDrawn[n] = true; // teraz jest naprawdę wylosowana
out += " " + (n + 1); // n+1, bo mamy mieć od 1 do 49
}
}
for(k=0;k<49;k++)
isDrawn[k] = false;
k = 0;
iProba++;
}while(liczbyWylosowane[0]!=liczbyUzytkownika[0] || liczbyWylosowane[1]!=liczbyUzytkownika[1] ||liczbyWylosowane[2]!=liczbyUzytkownika[2] ||
liczbyWylosowane[3]!=liczbyUzytkownika[3] || liczbyWylosowane[4]!=liczbyUzytkownika[4] ||liczbyWylosowane[5]!=liczbyUzytkownika[5]);
System.out.println("Liczby wylosowane zostaly przy probie:"+String.valueOf(iProba));
for (int liczbaWylosowana : liczbyWylosowane)
System.out.print(" " + liczbaWylosowana);
showMessageDialog(null, "Wylosowane liczby:\n" + out);
}
}
}
Ogólny kod, który teraz mam wygląda tak (do tego drugiego programu):
public class LiczbaLosowa {
public static void main(String[] args) {
String msg = "Podaj magiczną liczbę (od 1 do 100),\n" +
"nic nie wpisuj = automatyczna inicjacja,\n" +
"lub wybierz Cancel, by skończyć losowanie";
Random rand;
boolean[] isDrawn = new boolean[100];
final int ILE = 1;
int[] liczbyUzytkownika = new int[ILE];
String inp;
while ((inp = showInputDialog(msg)) != null) {
if (!inp.equals("")) {
Scanner sc = new Scanner(inp);
long sum = 0;
while (sc.hasNextInt()) sum += sc.nextInt();
rand = new Random(sum);
}
else rand = new Random();
int[] liczbyWylosowane = new int[ILE];
// Losowanie
int k = 0;
long iProba = 0;
String out = "";
while (k < ILE) {
int n = rand.nextInt(100);
if (isDrawn[n]) continue;
else {
k++;
isDrawn[n] = true;
out += " " + (n+1);
}
}
for(k=0;k<49;k++)
isDrawn[k] = false;
k = 0;
iProba++;
showMessageDialog(null, "Wylosowana liczba:\n" + out);
}
}
}
Co dodać lub zmienić, aby program działał tak jak jest w treści zadania? Teraz tylko można wpisać liczbę i program losuje swoją. Proszę również o wytłumaczenie.
Bardzo proszę o pomoc!