2017-04-02 57 views
0

我想寫根據這些參數的程序:計劃不會通過方法

創建一個名爲RandomArray程序,將產生所謂numArray 10個隨機 整數大於1並且小於或數組等於100.程序應要求用戶輸入大於0小於100的整數 。然後程序應該顯示 陣列中所有大於用戶輸入數字的數字。

您將需要一個叫做ranNumber隨機數生成器並使用它來填充叫numArray大於0和小於或等於10號至100整數數組 要求用戶輸入一個稱爲比userNum更大 號0且小於100.創建一個名爲 的靜態void方法displayGreaterThan使用增強型for循環遍歷數組,並將if語句與 比較數組內容和用戶輸入的數字。該方法應顯示數組中的數字 ,該數字大於用戶輸入的數字。

問題是,當我運行我的程序時,我沒有用我的隨機數生成器得到十個結果。每個輸入的號碼都不同,我不知道爲什麼。

這裏是我的代碼:

public class RandomArray 
{ 
    public static void main(String[] args) 
    { 
     Scanner input = new Scanner(System.in); 
     SecureRandom ranNumber = new SecureRandom(); 
     int NumArray[] = new int[10]; 

     int userNum; 
     int choice; 
     int num = 0; 

     { 
      num = 1+ ranNumber.nextInt(100); 
      displayGreaterThan (num); 
     } 

    }//end of main 

    public static void displayGreaterThan(int num) 
    { 
     int userNum ; 
     int numArray[] = new int[10]; 
     Scanner input = new Scanner(System.in); 
     System.out.println("Please enter a number 1 to 100"); 
     userNum = input.nextInt(); 
     while (userNum < 1 || userNum > 100) 
     { 
      System.out.println("error please try again."); 
      System.out.println("Please enter a number 1 to 100"); 
      userNum = input.nextInt(); 
     } 

     for (int counter = 1; counter <= numArray.length; counter++) 
     { 
      SecureRandom ranNumber = new SecureRandom(); 
      num = 1+ ranNumber.nextInt(100); 
      if (num > userNum) 
      { numArray[1]++; 
       System.out.println(+ userNum + " is your random number"); 
      } 
      else 
      { 
       counter++; 
      } 
     } 
    } 
} 

我在做什麼錯了,因爲這不應該是這個又硬。

回答

0

我會建議分手一點,讓每個程序更簡單。你宣佈掃描儀兩次,一次在主體中,這是沒有必要的。 displayGreaterThan程序有很多事情發生,我認爲是什麼導致你一些問題。並不是說這是完美的,但它可以與你必須簡化你想要做的事情進行比較。

public class RandomArray 
{ 
    public static void main(String[] args) 
    { 
     int[] intNumArray = new int[11]; 
     int intUserNumber = 0; 

     // Get random numbers 
     intNumArray = GenerateRandomNumbers(); 

     // Get user initial user input 
     intUserNumber = GetUserInput(intUserNumber); 

     // Validate and recursively call procedure if invalid 
     if(intUserNumber < 1 || intUserNumber > 100) 
     { 
      // Get user input again if invalid 
      intUserNumber = GetUserInput(intUserNumber); 
     } 

     // Display results 
     DisplayGreaterThan(intUserNumber, intNumArray); 

     // Print array for double checking 
     PrintArray(intNumArray); 

    } 

    public static int[] GenerateRandomNumbers() 
    { 

     SecureRandom ranNumber = new SecureRandom(); 
     int[] intNumArray = new int[11]; 

     for(int intCounter = 0; intCounter < 11; intCounter++) 
     { 
      intNumArray[intCounter] = ranNumber.nextInt(100); 

     }  
     return intNumArray; 
    } 

    public static int GetUserInput(int intUserNumber) 
    { 
     Scanner clsScanner = new Scanner(System.in); 

     System.out.println("Please enter a number between 1 and 100"); 
     intUserNumber = clsScanner.nextInt(); 

     return intUserNumber; 

    } 

    public static void DisplayGreaterThan(int intUserNumber, int[] intNumArray) 
    { 
     System.out.println("The array values greater than " + intUserNumber + ":"); 

     for(int intCounter = 0; intCounter < 11; intCounter++) 
     { 
      if(intNumArray[intCounter] > intUserNumber) 
      { 
       System.out.println("#" + intCounter + " = " + intNumArray[intCounter]); 
      } 
     } 
    } 

    public static void PrintArray(int[] intNumArray) 
    { 
     System.out.println("The random array values:"); 

     for(int intCounter = 0; intCounter < 11; intCounter++) 
     { 
      System.out.println("#" + intCounter + " = " + intNumArray[intCounter]); 
     } 
    } 
}