Java Benutzereingabe ohne doppelten werten und alle zwischen 0 und 100?
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int i = 1;
do {
System.out.println("Bitte geben Sie eine Zahl.");
int user_input = sc.nextInt();
if(user_input)
i++;
}
while(i<10);
}
}
ich will dass der Benutzer 10 Zahlen zwischen 0 und 100 eingibt und jede Zahl muss verschieden sein. Sind die Zahlen gleich soll der Benutzer sie nicht akzeptieren. Aber ich komme einfach nicht darauf, Kann mir bitte jemand helfen
2 Antworten
Von gutefrage auf Grund seines Wissens auf einem Fachgebiet ausgezeichneter Nutzer
PC, Computer, programmieren
Lege dir die Eingaben in einem Array ab. Bei jeder neuen Eingabe läufst du einmal durch das Array und schaust, ob es den Wert bereits gibt.
@regex9
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int i = 0;
int[] a = new int[9];
do {
System.out.println("Bitte geben Sie eine Zahl.");
int user_input = sc.nextInt();
if(user_input<=100 && user_input>=0 ){
a[i] = user_input;
}
i++;
}
while(i<9);
}
}
regex9
29.09.2020, 11:29
@Arman640
- Gib mal einen Variablen immer aussagekräftige, eindeutige Namen. Wenn du ein paar Tage später über den Quellcode schaust, und dort nur a, b und c liest, wirst du es schwerer haben, ihn wieder zu verstehen.
- Das fehlt dir noch: Bei jeder neuen Eingabe läufst du einmal durch das Array und schaust, ob es den Wert bereits gibt.
Einfach alle eingegebenen Zahlen in einem HashSet speichern und vorher prüfen, ob die Zahl schon existiert.
Woher ich das weiß:Studium / Ausbildung – Abgeschlossenes Informatik-Studium
Christoph987
29.09.2020, 10:33
@Arman640
HashSet<Integer> zahlen = new HashSet<Integer>();
...
if(zahlen.add(user_input)) ++i;
ich habs versucht aber komme leider einfach nicht darauf