2014-02-09 42 views
0

我正在努力工作這個邏輯,但似乎無法實現。我會很感激這方面的任何方向。我想要一種方法來生成1到10之間的隨機數 ,然後返回一個本地String []數組「numArr」的四個元素的數組,該數組是本方法的本地成員。因此,可以說,如果 產生的隨機數是「8」,我將不得不for循環開始的「8」反向並返回:正向循環或反向循環取決於生成的隨機數?

「八」 「七」 「六個一」 「十二五」

我有一個設置爲4的局部變量「len」,「len」變量決定了需要返回多少個「numArr」元素。我確保生成的隨機數 小於(numArr.length - len),因此如果生成隨機數爲8,我的邏輯將確定並使用從8開始的反向循環。因爲如果調用 轉發循環,它只會執行兩次,因爲「numArr」只有10個元素。

我正在反向for循環:

,如果目前的隨機數>(numArr.length - LEN)。所以如果隨機數是7,8,9或10,邏輯將循環運行。

我目前沒有返回任何東西,我只是想確保在我返回任何東西之前邏輯功能完全正常。

public static void geNums(){ 

    //LENGTH IS SET TO 4 
    int len = 4; 

    //COUNTER 
    int counter = 0; 

    //LOCAL ARRAY WITH JUS 10 ELEMENTS 
    String[] numArr = {"one","two","three","four","five","six","seven","eight","nine","ten"};  

    //RANDOM NUMBER IS GENERATED BETWEEN 1 AND 10 
    Random randNum = new Random();  
    int curRandom = randNum.nextInt(9) + 0; //0 TO 9 || 1 TO 10 

    //CHOICE ARRAY 
    String[] choices = new String[ len ]; //LENGTH IS SET TO 4 

    //DISPLAY CURRENTLY GENERATED RANDOM NUMBER 
    System.out.println("Current Random Number: " + curRandom); 
    System.out.println("-------------------------"); 

    if(curRandom > (numArr.length - len)){ 

     //REVERSE LOOP 
     for(int i = curRandom; i >= len; i--){ 

     //BREAK IF COUNTER IS MORE THAN LEN 
     if(counter > len){ 
      --counter; 
      break; 
     } 
     choices[i] = numArr[i];  //POPULATE CHOICE ARRAY 
     ++counter; 
    } 
    else{ 
     //FORWARD LOOP 
     for(int i = curRandom; i < len; i++){ 
      choices[i] = numArr[i]; //POPULATE CHOICE ARRAY 
     }  
    } 

    //DISPLAY CHOICE ARRAY ELEMENTS FOR DUBUGGING 
    for(int j = 0; j < choices.length; j++){ 
     System.out.println(choices[j]); 
    } 

}//METHOD 

回答

1

根據我的理解,您生成一個介於1..10之間的數字。如果它大於五,則將其字符串名稱保存到數組中。我已經修改了你的代碼,希望你能理解。 我發現的第一個問題是(int i = curRandom; i> = len; i--)...... choices[i] = numArr [i]。記住你的數組(選擇)被聲明爲4的長度:String[] choices = new String[ len ]; //LENGTH IS SET TO 4那麼如果你生成8號呢?您可以從8開始蒙山i,當你調用choices[i]等於蒙山choices[8] 它會給一個IndexOutOfBoundException,因爲你的陣列只有4所以這裏是一個解決方案:

//LENGTH IS SET TO 4 
      int len = 4; 

      //COUNTER 
      int counter = 0; 

      //LOCAL ARRAY WITH JUS 10 ELEMENTS 
      String[] numArr = {"one","two","three","four","five","six","seven","eight","nine","ten"};  

      //RANDOM NUMBER IS GENERATED BETWEEN 1 AND 10 
      Random randNum = new Random();  
      int curRandom = randNum.nextInt(9) + 0; //0 TO 9 || 1 TO 10 

      //CHOICE ARRAY 
      String[] choices = new String[ len ]; //LENGTH IS SET TO 4 

      //DISPLAY CURRENTLY GENERATED RANDOM NUMBER 
      System.out.println("Current Random Number: " + curRandom); 
      System.out.println("-------------------------"); 

      if(curRandom > 5){ 
       int aux = curRandom; 
       for(int i = 0;i<len;i++) { 
        choices[i] = numArr[aux]; 
        aux--; 
       } 
      } 
      else { 
       int aux = curRandom; 
       for(int i = 0;i<len;i++) { 
        choices[i] = numArr[aux]; 
        aux++; 
       } 
      } 


      //DISPLAY CHOICE ARRAY ELEMENTS FOR DUBUGGING 
      for(int j = 0; j < choices.length; j++) 
       System.out.println(choices[j]); 

輸出:

Current Random Number: 2 
------------------------- 
three 
four 
five 
six