2017-01-10 9 views
1

私は、ユーザー入力を伴うHOMEWORK割り当てを持っています。Javaの配列への複数の入力を検証する

私は、1~7の範囲の3つの整数入力をユーザーに求め、それらを配列に格納したいと考えます。

私は何を持っていることは、これまでのすべての入力が7を超えている場合、正しく検証するようだと、文字列を除外などを入力し、まだすべてのヘルプは高く評価され

7の上になるように、単一の入力が可能になります。ここで

Scanner in = new Scanner(System.in); 
    boolean valid = false; 
    int[] inputRange = new int[3]; 
    while(!valid) 
    { 
     System.out.println("enter three numbers: "); 
     if(in.hasNextInt()) 
     { 
      for(int i = 0; i< inputRange.length; i++) 
      { 
       inputRange[i] = in.nextInt(); 
       if(inputRange[i] >= 1 && inputRange[i] <= 9){ 
        valid = true; 
       } 
      } 
     }else{ 
      in.next(); 
     } 
    } 
+0

(それはmain方法や輸入を含める必要があります)、有効MCVEだけでなく、「スニペット」を投稿してください何か間違ったことが見つかったら 'false'に設定してください。 – khelwood

+0

あなたの式 'inputRange [i] <= 9'は{1 <= x <= 7}が必要な場合、あなたの割り当て記述に従いません。 「すべての入力が7以上であれば、正しく検証する」とはどういう意味ですか?これも間違っていませんか? – eli

答えて

1

あなたのロジックは結構ですが、あなたは再びfalseにユーザーが新しい数字を入力しようとするたびにvalidを再起動する必要があります。

ユーザー入力を1から9までの間で確認する方法は、同じロジックを使用してdo-whileで少し違います。

また次回は、その後、その後、あなたが `` true`をを開始valid`持っている必要があり

import java.util.Scanner; 

public class ValidationOfNumbers { 
    public static void main(String[] args) { 
     Scanner in = new Scanner(System.in); 
     boolean valid = false; 
     int[] inputRange = new int[3]; 
     int counter = 0; 
     int number = 0; 
     System.out.println("Enter 3 digits between 1-9"); //Ask for digits, numbers can have multiple digits, while digits are numbers from 0-9 
     for (int i = 0; i < inputRange.length; i++) { 
      valid = false; //Restart "valid" variable for each new user input 
      do { 
       number = in.nextInt(); 
       if (number >= 1 && number <= 9) { 
        valid = true; //If valid, it will exit do-while 
       } else { 
        System.out.println("Enter a valid digit between 1-9"); 
       } 
      } while (!valid); 
      inputRange[i] = number; //We know it's valid because it went out of do-while, so we can now store it in the array 
     } 

     for (int i = 0; i < inputRange.length; i++) { 
      System.out.println(inputRange[i]); 
     } 
    } 
} 
+0

ありがとう、それは素晴らしいです。それができない唯一のことは、数字以外が入力されたかどうかを確認することです。それを修正するための調整はありますか?私はコードで軽快に試してみましたが、それを理解することができません –

+0

@ A.Einstein [この回答を確認してください(http://stackoverflow.com/a/23839837/2180785)それはどのように言う。質問を解決した場合は、[回答](http://stackoverflow.com/help/accepted-answer)をupvoteして受け入れることを忘れないでください。また、同じ質問で受け入れられた答えと他のものをチェックしてください。 – Frakcool

-1

はコード

Scanner in = new Scanner(System.in); 
    int count = 0; 
    int data[] = new int[3]; 
    while(count < 3) { 
     if(in.hasNextInt()) { 
      int val = in.nextInt(); 
      if(val>=1 && val <=7) { 
       data[count] = val; 
       count++; 
      } 
     } 
     else { 
      in.next(); 
     } 
    } 
+0

あなたはなぜこれがdownvotedされたのか教えてください –

+1

downvoterではありませんが、これはOPの質問を解決する理由となぜ彼が間違っていたのか説明しなかったためかもしれません。 – Frakcool

+0

oh ok。大変ありがとうございます –