2016-11-14 40 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<>(); 

號碼然後加入到集合中。它不會允許重複。