Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
读取文件返回java.util.NoSuchElementException错误_Java_File - Fatal编程技术网

读取文件返回java.util.NoSuchElementException错误

读取文件返回java.util.NoSuchElementException错误,java,file,Java,File,好的,作为挑战的一部分,我正在用java编写一个程序,以估计如果五个瓶盖中有一个瓶盖有奖,您必须打开瓶盖才能获奖的平均数量。作为挑战的一部分,我必须将试验数据写入一个文件并读回以计算平均值。第一部分很简单,但我一辈子也弄不明白为什么它拒绝把文件读回去。每次我尝试读取文件时,它都会抛出一个no-this元素异常。我不想成为那种只会说“嘿,我的代码怎么了?”的人,但我真的没有其他地方可以问,这真的开始让我恼火了。代码如下: package calculations; import java.uti

好的,作为挑战的一部分,我正在用java编写一个程序,以估计如果五个瓶盖中有一个瓶盖有奖,您必须打开瓶盖才能获奖的平均数量。作为挑战的一部分,我必须将试验数据写入一个文件并读回以计算平均值。第一部分很简单,但我一辈子也弄不明白为什么它拒绝把文件读回去。每次我尝试读取文件时,它都会抛出一个no-this元素异常。我不想成为那种只会说“嘿,我的代码怎么了?”的人,但我真的没有其他地方可以问,这真的开始让我恼火了。代码如下:

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以及错误发生的位置……请随意评论或回答这对代码的实际影响。您不能同时读写同一个文件,因此,您会遇到此错误。