读取文件返回java.util.NoSuchElementException错误
好的,作为挑战的一部分,我正在用java编写一个程序,以估计如果五个瓶盖中有一个瓶盖有奖,您必须打开瓶盖才能获奖的平均数量。作为挑战的一部分,我必须将试验数据写入一个文件并读回以计算平均值。第一部分很简单,但我一辈子也弄不明白为什么它拒绝把文件读回去。每次我尝试读取文件时,它都会抛出一个no-this元素异常。我不想成为那种只会说“嘿,我的代码怎么了?”的人,但我真的没有其他地方可以问,这真的开始让我恼火了。代码如下:读取文件返回java.util.NoSuchElementException错误,java,file,Java,File,好的,作为挑战的一部分,我正在用java编写一个程序,以估计如果五个瓶盖中有一个瓶盖有奖,您必须打开瓶盖才能获奖的平均数量。作为挑战的一部分,我必须将试验数据写入一个文件并读回以计算平均值。第一部分很简单,但我一辈子也弄不明白为什么它拒绝把文件读回去。每次我尝试读取文件时,它都会抛出一个no-this元素异常。我不想成为那种只会说“嘿,我的代码怎么了?”的人,但我真的没有其他地方可以问,这真的开始让我恼火了。代码如下: package calculations; import java.uti
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(infle.next());”
我还忘了提到它是否正确写入文件。我似乎只是通过搞乱arround找到了答案。我不知道这对它有什么影响,但我将行“outFile.Close();”移到“int total=0”声明的正上方(靠近底部)。我的最佳猜测是,如果不先关闭已编辑的文件,就无法引用该文件。感谢您的帮助。关闭许多
Writer
流,包括PrintWriter
,会导致实际写入文件的操作。您当前打开一个(我假设)空文件,然后在完成写入操作之前读取它(也就是说,在文件被更新为新文本之前).在代码中添加try/catch+printstacktrace,以便您知道它发生在哪一行,或者至少发布您的stacktrace以及错误发生的位置……请随意评论或回答这对代码的实际影响。您不能同时读写同一个文件,因此,您会遇到此错误。