Filereader不会转到下一行

时间:2015-02-04 07:38:03

标签: filereader printwriter

import java.util.*;
import java.io.*;
import java.text.DecimalFormat;

我的问题是,一旦启动循环,它就会读取文件的第一行并无限次地写入。

我想要的是它转到下一行等等

(代码基本上是我想要的,但还没有完成)

public class Lab0234
{
   public static void main(String [] args) throws FileNotFoundException
   {
      DecimalFormat two = new DecimalFormat("00.00");

      Scanner keyboard = new Scanner(System.in);
      Scanner inputFile = new Scanner(new FileReader("Lab02Input.txt"));

      double sPrice = inputFile.nextDouble();
      double sOwned = inputFile.nextDouble();
      double aDiv   = inputFile.nextDouble();
      double mValue;
      double mYield;

      mValue = getValue(sPrice, sOwned);
      mYield = getYield(sPrice, aDiv);

      PrintWriter reportFile = new PrintWriter("Lab02Report.txt");

      reportFile.println("Stock Value and Yield Report");
      reportFile.println("");
      reportFile.print("Stock   ");
      reportFile.print("Price   ");
      reportFile.print("Shares   ");
      reportFile.print("Value   ");
      reportFile.print("Dividend   ");
      reportFile.println("Yield");

      while(inputFile.hasNext())
      {
         if (inputFile.hasNext())
         {
            reportFile.print("        ");
            reportFile.print(sPrice+"    ");
            reportFile.print(sOwned+"   ");

            getValue(sPrice, sOwned);
            reportFile.print(two.format(mValue)+"   ");
            reportFile.print(aDiv+"      ");

            getYield(sPrice, aDiv);
            reportFile.println(two.format(mYield)+"   ");

            inputFile.close();
            reportFile.close();

         }

         /*else
         {
            inputFile.close();
            reportFile.close();
         }*/
      }

      //inputFile.close();
      //reportFile.close();

   }

   public static double getValue(double sPrice, double sOwned)
      {
         //DecimalFormat two = new DecimalFormat("00.00"); //Decimal format
         double mValue;

         mValue = (sPrice * sOwned);
            //System.out.printf("Stock Value is " + mValue);

         return mValue;
      }

      public static double getYield(double sPrice, double aDiv)
      {
         //DecimalFormat two = new DecimalFormat("00.00"); //Decimal format
         double mYield;

         mYield = (aDiv * sPrice);
            //System.out.printf("\nDividend Yield is " + two.format(mYield));

         return mYield;
      }
}

2 个答案:

答案 0 :(得分:0)

你永远不会在你的inputFile上调用next():

while(inputFile.hasNext())
  {
     String x = inputFile.next();
     if (inputFile.hasNext())

答案 1 :(得分:0)

尝试这样做

try {
    BufferedReader br = new BufferedReader(new FileReader(filePath));
    String line;
    while ((line = br.readLine()) != null) {
        // do somthing
    }
    br.close();
} catch (Exception e) {
    System.out.print("Problem!");
}