2016-11-25 2 views
-1

im работает в проблеме, где у меня есть код, который должен позволять вам вводить несколько целых чисел, а затем искать конкретное целое число в этих целых числах. Проблема у меня есть, где ввод представляет собой целое число, а затем слово. (пример: 4 Java) Другое то, что код работает так, как предполагалось, но при конкретном ответе int тогда слово, которое оно по-прежнему читает как правильный ввод.Проблема с принятием допустимого ввода

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); 

    } 

    } 
    } 



    } 





    } 
    } 
+0

Итак, что он должен делать, когда вы вводите «4 Java»? Признание ошибки и выхода было бы разумным для меня. – Aaron

ответ

0

Как вы думаете, что вы делаете проверку на достоверность?
Вы только проверяете, является ли первый токен числом, после чего вы просто читаете, пока не будет найдено больше номеров. Таким образом, пока ваш первый токен является числом, он считается действительным вводом вашего кода.

В следующий раз, пожалуйста, используйте отладчик. Такие вопросы здесь не по теме.

Смежные вопросы