好的,作为挑战的一部分,我正在用java编写一个程序来估算你必须打开以获得奖品的瓶盖的平均数量,如果5个中有1个有奖品。作为挑战的一部分,我必须将试验数据写入文件并将其读回以计算平均值。第一部分很简单,但我不能为我的生活弄清楚为什么它拒绝阅读文件。每次我尝试读取文件时都会抛出一个没有这样的元素异常。我讨厌成为那样的人“嘿,我的代码有什么不对?”但我真的没有别的问题,这真的开始加剧我。这是代码:
package calculations;
import java.util.Scanner;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.PrintWriter;
public class BottleCapPrize {
static int randomRange (int min, int max){
int range = (max - min)+1;
return (int)(Math.random() * range) + min;
//simple bit of code to return a random number between min and max, inclusively.
}
public static void main(String[] args) throws IOException{
File text = new File("cap.txt");
PrintWriter outFile = new PrintWriter(text);
Scanner in = new Scanner(System.in);
System.out.print("Please enter the number of trials: ");
int trials = in.nextInt();
boolean won = false;
int numberoftries = 1;
int caps;
while(trials>0){
while(won==false){
caps = randomRange(1,5);
if(caps == 1){
won = true;
}else{
numberoftries +=1;
}
}
won = false;
outFile.println(numberoftries);
trials-=1;
numberoftries=1;
}
int total=0;
Scanner infile = new Scanner(text);
System.out.println(infile.next());
while(infile.hasNextInt()){
total += infile.nextInt();
System.out.println(total);
}
System.out.println((double)total/(double)trials);
outFile.close();
infile.close();
}
}
感谢您的帮助。
编辑:我为不包括此前的
而道歉Please enter the number of trials: 5
Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at calculations.BottleCapPrize.main(BottleCapPrize.java:51)
问题似乎出现在这一行“System.out.println(infile.next());”
我也忘了提到它正确写入文件。
答案 0 :(得分:1)
我似乎只是弄乱了周围的答案。我不知道这会影响它的方式或原因,但我移动了“outFile.Close();”这一行。在“int total = 0”(靠近底部)的声明之上。我最好的猜测是,如果不先关闭它,就不能引用编辑过的文件。谢谢你的帮助。
答案 1 :(得分:1)
关闭许多Writer
个流,包括PrintWriter
,会导致实际写入文件的操作。您当前打开一个(我假设)空文件,然后在完成写入操作之前读取它(也就是说,在使用新文本更新文件之前)。