程序不通过方法

时间:2017-04-02 05:30:55

标签: java

我试图根据这些参数编写程序:

创建一个名为RandomArray的程序,它将生成一个名为numArray的数组10随机 整数大于1且小于或等于100.程序应要求用户输入 一个大于0且小于100的整数。然后程序应显示所有数字 数组大于用户输入的数字。

您将需要一个名为ranNumber的随机数生成器,并使用它来填充整数数组 调用numArray,其中10个数字大于0且小于或等于100.要求用户输入a 名为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++;
            }
        }
    }
}

我做错了什么,因为这不应该这么难。

1 个答案:

答案 0 :(得分: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]);
        }
    }
}