對於我的任務,我要編寫一個文件,其中使用輸入試驗來確定打開蘇打水帽並獲得獎品的人獲得獎品的平均值。他們有五分之一的機會獲勝。一旦我有單獨的試驗的平均值,我將讀回試驗並計算平均值。我有麻煩試圖從文件中讀取雙打。這是我的代碼到目前爲止。在文件中讀取雙打
import java.util.Scanner;
import java.io.File;
import java.io.PrintWriter;
import java.io.IOException;
public class BottleCapPrize
{
public static void main(String[] args) throws IOException
{
double averageBottles = 0.0;
double randNum = 0.0;
int bottleSum = 0;
int numBottles = 1;
int bottle = 0;
int maxRange = 6;
int minRange = 1;
int oneTrial = 0;
int winPrize = 1;
double token = 0;
int totalSumCaps = 0;
Scanner in = new Scanner(System.in);
//Generates bottle number for first test
randNum = Math.random();
bottle = ((int)((randNum) * (maxRange - minRange)) + minRange);
//construct an object called outFile to allow access to output methods of the PrintWriter class
PrintWriter outFile = new PrintWriter(new File("trials.txt"));
//Gets users input for how many trials
System.out.print("Enter the amount of trials: ");
int trials = in.nextInt();
System.out.println();
//Check averages for entered trials
for (int loop = 1; loop <= trials; loop++)
{
//Clears out the loops variables each time through
if(loop != 0)
{
averageBottles = 0;
bottleSum = 0;
oneTrial = 0;
numBottles = 0;
}
for(int x = 1; x <= 20; x++)
{
if(x == 20) //One trial is completed
{
averageBottles = bottleSum/x;
//Replaces the old bottle number for a new bottle
randNum = Math.random();
bottle = ((int)((randNum) * (maxRange - minRange)) + minRange);
}
else if(bottle == winPrize)
{
oneTrial = numBottles;
if(oneTrial == 0)
{
oneTrial = 1;
}
//Replaces the old bottle number for a new bottle
randNum = Math.random();
bottle = ((int)((randNum) * (maxRange - minRange)) + minRange);
}
else if(bottle != winPrize) //not a winner, gets new bottle and increments the number of bottles tested
{
//Replaces the old bottle number for a new bottle
randNum = Math.random();
bottle = ((int)((randNum) * (maxRange - minRange)) + minRange);
oneTrial = numBottles;
numBottles ++;
}
bottleSum += oneTrial; //Adds the sum from each trial
}
outFile.println("Trial " + loop + "." + " " + averageBottles); //Prints the averages to the file
System.out.println("Trial " + loop + "." + " " + averageBottles);
//outFile.println("Trial " + "=" + " " + averageBottles); //Prints the averages to the file
//System.out.println("Trial "+ "=" + " " + " " + averageBottles);
}//end of for loop
outFile.close ();//close the file when finished
//Read the trial data back in and calculate the average
File fileName = new File("trials.txt");
Scanner inFile = new Scanner(fileName);
//read file and get data
while(inFile.hasNext())
{
token = inFile.nextDouble();
totalSumCaps += token;
}
inFile.close();
double totalAverageCaps = totalSumCaps/trials;
//Print results
System.out.println();
System.out.println("The average number of caps opened in order to win a prize is: " + totalAverageCaps);
}
}
請參閱['Double.parseDouble()'](http://docs.oracle.com/javase/7/docs/api/java/lang/Double.html#parseDouble(java.lang.String)) – Justin
「有麻煩」是什麼意思?發生了什麼問題? – Epicblood
你知道整數/雙打默認爲0/0.0吧? – Tdorno