2016-11-14 2 views
-8
for (int i = 0; i < 6; i++) { 
     lineOne[i] = Integer.parseInt(JOptionPane.showInputDialog(null,""); 

     if (lineOne[i] > 47 || lineOne[i] < 1)//Number also have to be inside these parameters 
      JOptionPane.showMessageDialog(null, "Please try again!!!"); 
      lineOne[i] = Integer.parseInt(JOptionPane.showInputDialog(null, "")); 
     } 
    } 
+7

質問に質問を含めるのを忘れてしまったようです。 – Biffen

+1

この質問には「質問」の重大な欠如があります。 – ItamarG3

+1

したがって、値を保存する前に値が存在するかどうかを確認してください。 – azurefrog

答えて

0

if文に問題があります。入力された値が1〜47の範囲外にある場合にコードが書き込まれる方法で、値を再度要求しました。しかし、 "間違った"値が与えられた場合、配列に保持してforループの先頭に戻ります。

これを試してください。

for (int i = 0; i < 6; i++) { 
     lineOne[i] = Integer.parseInt(JOptionPane.showInputDialog(null,""); 

     while (lineOne[i] > 47 || lineOne[i] < 1) { //Number also have to be inside these parameters 
      JOptionPane.showMessageDialog(null, "Please try again!!!"); 
      lineOne[i] = Integer.parseInt(JOptionPane.showInputDialog(null, "")); 
     } 
    } 
+0

コードが機能していません。あなたはまだ重複値を入力することができます – XtremeBaumer

+0

ありがとう、ありがとう。 – colOnTheBall

0
boolean b = true; 
    int[] lineOne = new int[6]; 
    for (int i = 0; i < 6; i++) { 
     b = true; 
     int k = Integer.parseInt(JOptionPane.showInputDialog(null, "")); 
     for (int j : lineOne) { 
      if (k == j) { 
       System.out.println("error"); 
       b = false; 
       break; 
      } 
     } 
     if (b && k < 47 && k > 1) { 
      lineOne[i] = k; 
     } else { 
      JOptionPane.showInputDialog(null, "Duplicate value or value out of bounds."); 
      i--; 
     } 
    } 

これは私が考えることができる最高の方法です。ブール値は、値がすでに存在するかどうかを決定します。

+0

ありがとう私はこれに似た何かを使用して、それは完全に動作します – colOnTheBall

2

配列を使用する代わりに、Setを使用します。

例:

Set<Integer> numbers=new HashSet<>(); 

次にセットに番号を追加します。重複は許可されません。

関連する問題