Ich bin in einem Problem, wo ich einen Code haben, der Sie mehrere Ganzzahlen eingeben können und dann nach einer bestimmten Ganzzahl in diesen Ganzzahlen suchen können. Das Problem, das ich habe, ist, wo die Eingabe eine Ganzzahl und dann ein Wort ist. (Beispiel: 4 Java) Ansonsten funktioniert der Code wie vorgesehen, aber bei der spezifischen Antwort eines int dann liest ein Wort immer noch als korrekte Eingabe.Problem mit akzeptablen Eingabe
public static void main(String[] args) {
Random rng = new Random();
boolean Finished = true;
boolean Försök = true;
int Mitt = rng.nextInt(100)+1;
int Head;
while (Finished == true){
System.out.println(Mitt);
String S = JOptionPane.showInputDialog("Var god gissa vilket heltal jag valt! \n Du kan skriva in max 5 heltal varje gissning!");
// allows you to enter 5 integers
if (S == null|| (S != null && ("".equals(S)))){
System.exit(0);
}
Scanner Svar = new Scanner(S);
if (Svar.hasNextInt() == false || Pattern.matches("[a-öA-Ö ]+", S)) {
JOptionPane.showMessageDialog(null, "Error, var god skriv in ett heltal");
Mitt = rng.nextInt(100)+1;
}
else {
ArrayList<Integer> mylist = new ArrayList<>();
while (Svar.hasNextInt() && Finished == true){
Head = Svar.nextInt();
mylist.add(Head);
if (mylist.size()>5){
JOptionPane.showMessageDialog(null, "Tyvärr skrev du in mer än 5 heltal! \n Var god mata in igen!");
Försök = false;
break;
}
System.out.println(mylist);
if (Head>100 || Head<0){
JOptionPane.showMessageDialog(null, "Tyvärr skrev du in ett heltal som var över 100 eller mindre än 0! \n Var god mata in igen!");
Försök = false;
break;
}
if (mylist.contains(Mitt)){
JOptionPane.showMessageDialog(null, "ayo du svarade rätt med " + Mitt);
System.exit(0);
}
else if (Försök == true){
JOptionPane.showMessageDialog(null, "Tyvärr svarade du fel! du kan försöka igen! rätt svar är " + Mitt);
}
}
}
}
}
}
Also, was sollte es tun, wenn Sie "4 Java" eingeben? Es wäre vernünftig, einen Fehler zu machen und zu beenden. – Aaron