Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java循环问题_Java_Loops - Fatal编程技术网

Java循环问题

Java循环问题,java,loops,Java,Loops,我正在写一个程序,它有五分之一的机会是正确的,直到它是正确的,它会继续运行。然后它应该将信息打印到一个文件中,但是当我尝试运行它时,它似乎不会运行第二个循环,不管我用扫描仪要求它运行多少次。我需要while循环中的所有内容都与for循环进行相同的次数,因为我将获取它,并找到获得20%所需次数的平均百分比。在此主题上的任何帮助都将不胜感激 编辑-我给出的具体输入是变量试验,当我启动程序时,如果我将其设置为1000,我希望看到for循环将循环及其内部的所有内容重复1000次 编辑2-我想添加我要做的

我正在写一个程序,它有五分之一的机会是正确的,直到它是正确的,它会继续运行。然后它应该将信息打印到一个文件中,但是当我尝试运行它时,它似乎不会运行第二个循环,不管我用扫描仪要求它运行多少次。我需要while循环中的所有内容都与for循环进行相同的次数,因为我将获取它,并找到获得20%所需次数的平均百分比。在此主题上的任何帮助都将不胜感激

编辑-我给出的具体输入是变量试验,当我启动程序时,如果我将其设置为1000,我希望看到for循环将循环及其内部的所有内容重复1000次

编辑2-我想添加我要做的事情,我正在做一个项目,以下是我要做的指导方针:

  • 确定每个人必须打开多少瓶盖才能找到获胜的瓶盖。(这表示一次试用。)将此值打印到文本文件中
  • 提示用户输入试用次数。至少进行1000次试验
  • 从输出文件中读回所有试验的数据
  • 计算为赢得奖品而打开的瓶盖的平均数量
  • 将结果打印到屏幕上

    导入java.util.Random; 导入java.util.Scanner; 导入java.io.IOException; 导入java.io.PrintWriter; 导入java.io.File; 公共级瓶装水 { 公共静态void main(字符串[]args)引发IOException {

    PrintWriter outFile=新的PrintWriter(新文件(“EBoost Chance.txt”);
    扫描仪输入=新扫描仪(系统输入);
    Random rand=新的Random();
    System.out.print(“您将运行多少次试验?”);
    int trials=in.nextInt();
    整数=0;
    int randomNum=0;
    int winCounter=0;
    int计数器=0;
    int瓶盖=1;
    int max=5;
    int min=1;
    双百分比=0.0;
    
    对于(totalTrials=0;totalTrials您需要在每次for循环迭代时重置
    randomNum
    。否则,将永远不会进入while循环,因为
    randomNum
    仍将等于上一次迭代的
    1

    import java.util.Random;
    import java.util.Scanner;
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.io.File;
    
    public class Main
    {
        public static void main(String[] args) throws IOException
        {
    
            PrintWriter outFile = new PrintWriter(new File("EBoost Chance.txt"));
            Scanner in = new Scanner(System.in);
            Random rand = new Random();
    
            System.out.print("How many trials will you run? ");
            int trials = in.nextInt();
            int totalTrials = 0;
    
            int bottleCap = 1;
            int max = 5;
            int min = 1;
            double percentage = 0.0;
    
            for (totalTrials = 0; totalTrials <= trials; totalTrials++)
            {
                int counter = 0;
                int winCounter = 0;
                int randomNum = 0;     // this was moved from outside the for
                while (randomNum != 1)
                {
                    randomNum = rand.nextInt((max - min) + 1) + min;
                    if (randomNum == 1)
                    {
                        winCounter++;
                        counter++;
                        outFile.println("You would win in " + counter + " bottles.");
                    }
                    else if (randomNum != 1)
                    {
                        counter++;
                    }
                }
            }
            outFile.close();
        }
    }
    
    import java.util.Random;
    导入java.util.Scanner;
    导入java.io.IOException;
    导入java.io.PrintWriter;
    导入java.io.File;
    公共班机
    {
    公共静态void main(字符串[]args)引发IOException
    {
    PrintWriter outFile=新的PrintWriter(新文件(“ebost Chance.txt”);
    扫描仪输入=新扫描仪(系统输入);
    Random rand=新的Random();
    System.out.print(“您将运行多少次试验?”);
    int trials=in.nextInt();
    整数=0;
    int瓶盖=1;
    int max=5;
    int min=1;
    双百分比=0.0;
    
    对于(totalTrials=0;totalTrials不是一个坏问题。但是,你需要更具体地说明你给程序提供了什么输入,它产生了什么输出,以及你希望得到什么输出。这些详细信息将使你更容易获得帮助。请编辑问题以包含它们。因此,你是说如果用户输入你想要的5
    for
    循环和
    while
    循环都要运行5次?因为现在
    while
    循环一直运行到
    randomNum
    ==1(在第一次
    for
    循环迭代中)然后就没什么可做的了,所以自然地,
    for
    循环总是只运行一次。@Hack-R我想要它,这样无论我将trials变量设置多少次,for循环都会运行其中的所有内容。我不知道该怎么做才能使它这样randomNum==1不会在那之后停止。抱歉,如果我错过了一些非常简单的东西我还在学习java,你需要在for循环中重置randomNum(就在while循环之前)。
    import java.util.Random;
    import java.util.Scanner;
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.io.File;
    
    public class Main
    {
        public static void main(String[] args) throws IOException
        {
    
            PrintWriter outFile = new PrintWriter(new File("EBoost Chance.txt"));
            Scanner in = new Scanner(System.in);
            Random rand = new Random();
    
            System.out.print("How many trials will you run? ");
            int trials = in.nextInt();
            int totalTrials = 0;
    
            int bottleCap = 1;
            int max = 5;
            int min = 1;
            double percentage = 0.0;
    
            for (totalTrials = 0; totalTrials <= trials; totalTrials++)
            {
                int counter = 0;
                int winCounter = 0;
                int randomNum = 0;     // this was moved from outside the for
                while (randomNum != 1)
                {
                    randomNum = rand.nextInt((max - min) + 1) + min;
                    if (randomNum == 1)
                    {
                        winCounter++;
                        counter++;
                        outFile.println("You would win in " + counter + " bottles.");
                    }
                    else if (randomNum != 1)
                    {
                        counter++;
                    }
                }
            }
            outFile.close();
        }
    }