当前位置: 首页 > 知识库问答 >
问题:

程序不通过法

厍胤运
2023-03-14

我试图基于这些参数编写一个程序:

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

下面是我的代码:

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个答案

晁英彦
2023-03-14

我建议将它分解得更多一点,以使每个过程更加简单。您声明了扫描仪两次,一次在主要,这是不必要的。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]);
        }
    }
}
 类似资料:
  • 问题内容: 我有一个外部程序Otter,该程序将一些文件名作为参数并创建了一个输出文件,也将其指定为参数。因此,例如,如果我的输入是“ proof.in”,并且我希望将输出放置在“ proof.out”文件中,则可以在终端中运行以下命令: “ proof.in”文件必须与水獭可执行文件位于同一文件中。 问题是我需要Java提供此功能,因此在我的Java代码中执行以下操作: 但是在此行之后,整个用户

  • 新的Google chrome更新会在浏览器中出现这样的信息:“您正在使用不受支持的命令行标志:--Ignore-Certifice-Errors。稳定性和安全性将受到影响。” 根据我在selenium bug报告中读到的内容,临时解决方案是启动webdriver

  • 具有以下邮件配置设置: 以及以下属性: 我得到以下错误: JAVAlang.RuntimeException:javax。邮政MessaginException:无法连接到SMTP主机:SMTP。我们德勤。com,端口:25;嵌套的例外是:java。网SocketException:权限被拒绝: 当我使用gmail作为“发件人”帐户和“收件人”中的Outlook帐户时,代码是一样的。 我试着设置s

  • 当我通过命令行运行spring boot应用程序时,我面临的问题是 这很好,但在intellij中作为应用程序运行时,我发现以下错误- 可能的原因是什么,我应该在哪里查看配置修复? 关于这个模式还有其他问题,但没有一个提到这个错误- SpringBoot应用程序通过Maven运行良好,但不能通过IDEIntellijIDEA运行 ApplicationContextException:由于缺少Se

  • 我在Windows Server 2016上,尝试通过Windows任务调度器运行Java应用程序。我可以在cmd中执行Java应用程序。 这将执行程序并关闭java。exe之后。 如果我试着在任务调度器上运行它,它不会关闭java。exe之后。一段时间后,这会导致服务器上没有足够的内存来处理其预期用途。 我尝试将其直接添加到任务计划程序,并通过批处理,它不会在之后终止java.exe。 我的Ja

  • 问题内容: 新的Google chrome更新导致浏览器中出现此消息:“您使用的是不受支持的命令行标志:-ignore-certificate- errors。稳定性和安全性将受到损害。” 根据我对selenium错误报告的了解,临时解决方案是使用 创建驱动程序时,我已经在传递DesiredCapabilities了。如何将ChromeOptions和DesiredCapabilities都传递给