阅读文本文件时遇到问题

时间:2014-09-28 23:49:21

标签: java file text

我似乎遇到了这段代码的问题。目的是找出在5面骰子上滚动1所需的平均尝试次数。我想我的数学合适;我只是无法获得读取文本文件的while循环。

import java.io.IOException;
import java.io.PrintWriter;
import java.io.File;
import java.util.Random;
import java.util.Scanner;
public class BottleCapPrize
{
   public static void main (String[] args) throws IOException
   {
      Random randy = new Random();

      PrintWriter outFile = new PrintWriter(new File("boost.txt"));
      Scanner inFile = new Scanner(new File("boost.txt"));

      Scanner in = new Scanner(System.in);

      int trials;
      int tries = 6;
      int winCap = 6;
      int token = 0;
      double average;
      int total = 0;

      System.out.print("Please enter the number of trials: ");
      trials = in.nextInt();

      for (int loop = 1; loop <= trials; loop++)    
      {
          winCap = 6;
          tries = 0;
          while (winCap != 0)
          {
              tries++;
              winCap = randy.nextInt(5);
          }
          outFile.println(tries); 
          System.out.println(tries);
      }

      while (inFile.hasNext())
      {
          token = inFile.nextInt();
          total = total + token;
      }

      average = (double)total/(double)trials;
      System.out.println("Average : " + average);

      outFile.close();
      inFile.close();
      in.close();
   }
}

2 个答案:

答案 0 :(得分:0)

我认为你的意思是

while (inFile.hasNextLine())

while (inFile.hasNextInt())
希望有所帮助!

答案 1 :(得分:0)

您不要关闭输出文件。由于输出文件也是输入文件,除非先关闭输出,否则无法读取输入。

while (inFile.hasNext())之前移动outFile.close(),在关闭outFile之前不要打开你的inFile:

import java.io.IOException;
import java.io.PrintWriter;
import java.io.File;
import java.util.Random;
import java.util.Scanner;
public class BottleCapPrize
{
   public static void main (String[] args) throws IOException
   {
      Random randy = new Random();

      PrintWriter outFile = new PrintWriter(new File("boost.txt"));

      Scanner in = new Scanner(System.in);

      int trials;
      int tries = 6;
      int winCap = 6;
      int token = 0;
      double average;
      int total = 0;

      System.out.print("Please enter the number of trials: ");
      trials = in.nextInt();

      for (int loop = 1; loop <= trials; loop++)    
      {
          winCap = 6;
          tries = 0;
          while (winCap != 0)
          {
              tries++;
              winCap = randy.nextInt(5);
          }
          outFile.println(tries); 
          System.out.println(tries);
      }

      outFile.close();
      Scanner inFile = new Scanner(new File("boost.txt"));

      while (inFile.hasNext())
      {
          token = inFile.nextInt();
          total = total + token;
      }

      average = (double)total/(double)trials;
      System.out.println("Average : " + average);

      inFile.close();
      in.close();
   }
}