2017-02-09 6 views
-1

私は正のint値だけを受け入れるプログラムを作ろうとしています。ループを使用して負の整数を除外する方法は?

有効なintを入力するまで、非int型にするとwhileループが正常にループしました。

しかし、私はそれが正の整数だけを受け入れるように同じことをすることに問題があります。私は非整数を入力すると、それは私に再度質問されますが、私はneg宣言をスキップしてプログラムを続行するように思えます。どうしてこれなの?

私は正のintに入れてループする方法についてのヒント?

while(!scnr.hasNextInt()){ 

      System.out.print("Please enter an integer value as decimal digits: "); 
      if(dmCyl < 0){ 
       System.out.print("Please enter a positive integer value: "); 
      } 
      scnr.next(); 
      } 

     dmCyl = scnr.nextInt(); 

私も

while(dmCyl < 0){ 

    System.out.print("Please input positive integer: "); 

    scnr.next(); 
} 
+2

同様の質問が1〜2時間前にお願いしています。それはあなたですか?クラスメート? – Baby

+0

私はクラスメートかもしれませんが、同様の質問は見つかりませんでした。 –

+2

[こちらはあなたのクラスメートです](http://stackoverflow.com/questions/42126860/when-validating-loops-how-to-make-java-recheck-a-previous-while-statement)、Jacob – Baby

答えて

0

を言う非整数型のための1以下と外側のループはあなたがこのようなものを使用することができますしながら、同様のを使用して、無駄に、試してみた:

System.out.println("Enter a positive integer: "); 
    Scanner sc = new Scanner(System.in); 
    String input = sc.nextLine(); //take the input in string format 
    boolean valid=false; 
    boolean test=true; 
    int testnumber=0; 

    while(valid==false) 
    { 
     /*Check for non-integers*/ 
     try 
     { 
      testnumber=Integer.parseInt(input); //this can take any value 
     } 
     catch(NumberFormatException ex){ //to check if the input is an integer or not 
      System.out.println("Please enter a number: "); 
      input = sc.nextLine(); 
      valid=false; //still cant get out of the while loop 
      test=false; //this will always be false in case of non-integers 
     } 
     /*Check for positive integers*/ 
     if(test==true)//integer has been entered 
     { 
      if(testnumber<0) 
      { 
       System.out.println("please enter a positive integer: "); 
       input = sc.nextLine(); 
      } 
      else 
      { 
       valid =true; //positive integer entered, get out of the while loop 
      } 
     } 
     test=true; 
    } 
    System.out.println("You entered: "+testnumber); 

このプログラムは、入力が実際に整数かどうかをチェックする部分と、この条件が満たされた後に番号が否定的かどうかをチェックする部分の2つに分かれています。入力が整数であるかどうか、あなただけの数は、あなたがこれを使用することが負であるかどうかを確認したい場合は、すでにチェックすることができますので:

System.out.println("Enter a positive integer: "); 
    Scanner sc = new Scanner(System.in); 
    int input = sc.nextInt(); //take the input in string format 
    while(input<0) 
    { 
     System.out.println("Enter a positive integer: "); 
     input=sc.nextInt(); 
    } 
    System.out.println("you entered: "+input); 

は、この情報がお役に立てば幸いです。

関連する問題