Java循环问题
我正在写一个程序,它有五分之一的机会是正确的,直到它是正确的,它会继续运行。然后它应该将信息打印到一个文件中,但是当我尝试运行它时,它似乎不会运行第二个循环,不管我用扫描仪要求它运行多少次。我需要while循环中的所有内容都与for循环进行相同的次数,因为我将获取它,并找到获得20%所需次数的平均百分比。在此主题上的任何帮助都将不胜感激 编辑-我给出的具体输入是变量试验,当我启动程序时,如果我将其设置为1000,我希望看到for循环将循环及其内部的所有内容重复1000次 编辑2-我想添加我要做的事情,我正在做一个项目,以下是我要做的指导方针:Java循环问题,java,loops,Java,Loops,我正在写一个程序,它有五分之一的机会是正确的,直到它是正确的,它会继续运行。然后它应该将信息打印到一个文件中,但是当我尝试运行它时,它似乎不会运行第二个循环,不管我用扫描仪要求它运行多少次。我需要while循环中的所有内容都与for循环进行相同的次数,因为我将获取它,并找到获得20%所需次数的平均百分比。在此主题上的任何帮助都将不胜感激 编辑-我给出的具体输入是变量试验,当我启动程序时,如果我将其设置为1000,我希望看到for循环将循环及其内部的所有内容重复1000次 编辑2-我想添加我要做的
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不是一个坏问题。但是,你需要更具体地说明你给程序提供了什么输入,它产生了什么输出,以及你希望得到什么输出。这些详细信息将使你更容易获得帮助。请编辑问题以包含它们。因此,你是说如果用户输入你想要的5for
循环和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();
}
}