2017-04-02 58 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]); 
     } 
    } 
}