[英]Can't get counter to work
我真的很陌生,所以请原谅我的无知。所以这是我需要做的:
这是我尝试过的方法,但是计数器不起作用。
import java.util.Scanner;
import java.util.Random;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.File;
public class BottleCapPrize
{
public static void main(String [] args) throws IOException
{
int trials = 0;
int loop = 1;
int winCounter = 0;
int random;
double average;
//
Scanner in = new Scanner(System.in);
Random rand = new Random();
PrintWriter outFile = new PrintWriter (new File("MonteCarloMethod.txt"));
//
System.out.print("Number of trials: ");
trials = in.nextInt();
//
for(loop = 1; loop <= trials; loop++)
{
random = rand.nextInt(5);
if(random == 1)
{
outFile.println("Trial: " + loop + " WIN!");
winCounter++;
}
outFile.println("Trial: " + loop + " LOSE");
}
//
average = winCounter / trials;
outFile.println("Average number of caps to win: " + average);
System.out.println("Average number of caps to win: " + average);
outFile.close();
}
}
您可能面临的问题是将两个int
相除并期望得到double
结果
int trials = 0;
int winCounter = 0;
double average;
average = winCounter / trials;
将int
分为两个int
将导致精度下降。 而是使int
成为double
。 或至少其中之一。
double trials = 0;
double winCounter = 0;
double average;
average = winCounter / trials;
并使用in.nextDouble()
实际上,您的循环/计数器正在运行。 问题是平均计算不正确。 您需要确保将分区号视为浮点数。 因此,请执行以下计算,确保将winCounter和trial都视为浮点数:
average = (float) winCounter / (float) trials;
或者将winCounter和trial声明为float。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.