提出可接受的输入的问题

时间:2016-11-25 10:17:13

标签: java

我遇到一个问题,我有一个代码,它应该让你输入多个整数,然后在这些整数中搜索一个特定的整数。 我遇到的问题是输入是一个整数然后是一个单词。 (例如: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);

  }

  }
  }



  }





  }
    }

1 个答案:

答案 0 :(得分:0)

您认为您在哪里检查此有效性?
您只检查第一个令牌是否为数字,之后您只需阅读,直到找不到更多数字。因此,只要您的第一个标记是数字,它就会被您的代码视为有效输入。

下次请使用调试器。这些问题在这里是偏离主题的。