2015-11-12 65 views
0

我正在嘗試編寫一個程序,該程序在數組Data []中生成並存儲20個隨機數並要求用戶輸入他們的猜測。如果它們的數字出現在數組中,則每次出現時都會得到10分,數組將被打印,並且所有可以找到幸運數字的位置都會被打印出來。如果它不出現在數組中,我必須打印數組的最低和最高值,並只允許再嘗試一次。如果玩家第二次得到正確的結果,他們每次獲得1分。 例如:Data[]={3,1,8,31,25,6,3,20,41,12,3,23,7,3,65,49,5,0,13,17} ,並且如果用戶輸入3則程序將輸出查找陣列中的數字位置並給出分數Java

​​

並且對於相同Data[]={3,1,8,31,25,6,3,20,41,12,3,23,7,3,65,49,5,0,13,17}如果用戶輸入2則程序將輸出

Sorry your lucky number 2 is not in the array! 
Hint: Lowest Value:1 Highest Value 65 Try again with a different number in this range. 

如果他們輸入65在他們的第二次嘗試然後程序會輸出

You get 1 point(s)! 

這是我嘗試過的代碼,但它不工作。它一直告訴我我的號碼不在陣列中。最低和最高值工作。我不知道如何解決它。我必須在明天之前完成這件事。任何幫助將不勝感激。

String input1 = JOptionPane.showInputDialog("Please enter your lucky number between 0 and 100."); 
luck=Integer.parseInt(input1); 
System.out.println("Input " +luck); 

int Data[] = new int [20]; 
for(int i=0; i<Data.length;++i){ 
    Data[i] = (int) (Math.random() * 100); 
    System.out.print(Data[i]+ " \t"); 
} 
for(int i=0; i<Data.length;++i){ 
    if(Data[i]==luck){ 
     System.out.println(luck+ " can be found in the following positions: "); 
     System.out.println(i); 
     score=score+10; 
     System.out.println(luck+ " appears " +(luck/10)+ " times. You get " +score+ " points."); 
    }else if(Data[i]!=luck){ 
     Arrays.sort(Data); 
     System.out.println(); 
     System.out.println(luck+ " is not in the array."); 
     System.out.println("Hint: " +Data[0]+ " is the lowest value and " +Data[19]+ " is the highest."); 
     input1 = JOptionPane.showInputDialog("Please enter another number between 0 and 100."); 
     luck=Integer.parseInt(input1); 
    } 
} 
System.out.println(); 
System.out.println("Score: " +score); 

}} 

回答

3

問題是你沒有檢查你的值對數組中的每個值。如果輸入的值與您的數組中的第一個值(i = 0)不匹配,則您要求用戶輸入另一個值。

你需要做的是要求一個值,將它與表中的每個值進行比較,然後做出決定。要麼存在要麼不存在。

我添加了一個布爾值。如果我們找到我們的號碼,我們將其設置爲true,否則我們會顯示該消息並要求用戶再次嘗試。

試試這個:

boolean found = false; 
    for(int i=0; i<Data.length;++i){ 
     if(Data[i]==luck){ 
      System.out.println(luck+ " can be found in the following positions: "); 
      System.out.println(i); 
      score=score+10; 
      System.out.println(luck+ " appears " +(luck/10)+ " times. You get " +score+ " points."); 
      found = true; 
     } 
    } 
    if(!found){ 
      Arrays.sort(Data); 
      System.out.println(); 
      System.out.println(luck+ " is not in the array."); 
      System.out.println("Hint: " +Data[0]+ " is the lowest value and " +Data[19]+ " is the highest."); 
      input1 = JOptionPane.showInputDialog("Please enter another number between 0 and 100."); 
      luck=Integer.parseInt(input1); 
     } 

最後,你需要實現你的循環內的計數器,然後嘀......眼下顯示你的信息,它會顯示「#可以在下面找到位置「和其他消息的數組中找到每個實例。 實現一個計數器和一個方法來跟蹤發現價值的指標,然後您可以從外部相干顯示所有信息循環

編輯:爲了讓您更完整的實現... 此代碼應該基本上可以你幾乎在那裏你需要去:

public static void main(String[] args) { 
    int Data[] = new int [20]; 
    for(int i=0; i<Data.length;++i){ 
     Data[i] = (int) (Math.random() * 100); 
     System.out.print(Data[i]+ " \t"); 
    } 

    while(true){ 
     String input1 = JOptionPane.showInputDialog("Please enter your lucky number between 0 and 100."); 
     int luck=Integer.parseInt(input1); 
     int score = 0; 
     String positions = ""; 
     int counter = 0; 
     System.out.println("Input " +luck); 

     boolean found = false; 
     for(int i=0; i<Data.length;++i){ 
      if(Data[i]==luck){ 
       positions += i + " "; 
       counter++; 
       score=score+10; 
       found = true; 
      } 
     } 
     if(found){ 
      System.out.println(luck+ " can be found in the following positions: "); 
      System.out.println(positions); 
      System.out.println(luck+ " appears " + counter + " times. You get " +score+ " points."); 

     } 
     else{ 
      Arrays.sort(Data); 
      System.out.println(); 
      System.out.println(luck+ " is not in the array."); 
      System.out.println("Hint: " +Data[0]+ " is the lowest value and " +Data[19]+ " is the highest."); 
     } 

     System.out.println(); 
     System.out.println("Score: " +score); 
    } 

} 
+0

而且它不應該說的System.out.println(運氣+ 「出現」 +(得分/ 10)+ 「次你得到」 +分數+ 「點」。) ; ,而不是「運氣/ 10」次? –

+0

@telefunken我試過,但現在當我輸入數字3時,我得到這個作爲輸出: Input 3 | 73 89 81 97 14 92 71 36 1 57 89 82 3 45 5 43 66 71 46 62 | 3可在以下位置找到: | 3出現0次。你得到10分。 得分:10 – bluebarry

+0

@telefunken我不知道櫃檯是什麼。幾個月前我剛開始學習代碼。我如何將它添加到循環中? – bluebarry