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

时间:2015-11-13 04:31:24

标签: java file

好的,作为挑战的一部分,我正在用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());”

我也忘了提到它正确写入文件。

2 个答案:

答案 0 :(得分:1)

我似乎只是弄乱了周围的答案。我不知道这会影响它的方式或原因,但我移动了“outFile.Close();”这一行。在“int total = 0”(靠近底部)的声明之上。我最好的猜测是,如果不先关闭它,就不能引用编辑过的文件。谢谢你的帮助。

答案 1 :(得分:1)

关闭许多Writer个流,包括PrintWriter,会导致实际写入文件的操作。您当前打开一个(我假设)空文件,然后在完成写入操作之前读取它(也就是说,在使用新文本更新文件之前)。

相关问题