从.txt文件读取,计算和写入数据

pHorseSpec

我正在尝试从文本文件中读取数据,并使用该文件中的一些文本来计算其加班费,并将其输出到名为overtime.txt的文件中。

数据文件如下所示:

bob
50
2.3
julio
60
60.00

到目前为止,我的代码如下:

import javax.swing.JOptionPane;

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

public class ReadData { 
public ReadData ()
{
    try {
         String[] firstLine = new String[100],
         secondLine = new String[100],
         thirdLine = new String[100];

         double hours[] = new double[100], wages[] = new double[100];
         String result[] = new String[100],  formattedGrossPay[] = new String[100];
         double grossPay[] = new double[100];
         double excessHours[] = new double[100], extraPay[] = new double[100];
         String stringExcessHours[] = new String[100];

         int index;

         for (index = 0; index < 100; index++) {
         firstLine[index] = "";
         secondLine[index] = "";
         thirdLine[index ] = "";
         hours[index] = 0.0;
         wages[index]= 0.0;
    }
     FileReader file = new FileReader("payroll.txt");
     BufferedReader buffer = new BufferedReader(file);
     index = 0;
     String line;

     File check = new File("overtime.txt");
     FileWriter file2;
     if(check.exists())
         file2 = new FileWriter("overtime.txt", true);
     else
         file2 = new FileWriter("overtime.txt");
     BufferedWriter buffer2 = new BufferedWriter(file2);

     /*
     FileWriter file1 = new FileWriter("overtime.txt");
     BufferedWriter buffer1 = new BufferedWriter(file1);
     */

     while((line = buffer.readLine()) != null)
     {
         firstLine[index] = line;
         secondLine[index] = buffer.readLine();
         thirdLine[index ] = buffer.readLine();

         hours[index] = Double.parseDouble(secondLine[index]);
         wages[index] = Double.parseDouble(thirdLine[index]);
         DecimalFormat df = new DecimalFormat("#.00");
         result[index] = df.format(wages[index]);
         grossPay[index] = (hours[index] * wages[index]);
         if (hours[index] > 40)
         {
            excessHours[index] = hours[index]-40;
            extraPay[index] = excessHours[index] * (.5 * wages[index]);
            grossPay[index]=grossPay[index]+extraPay[index];
         }
         else
         {
             excessHours[index]=0;
         }

         //grossPayString[index] = Double.toString(grossPay[index]);
         formattedGrossPay[index] = df.format(grossPay[index]);

         JOptionPane.showMessageDialog(null, "Name: " + firstLine[index] + "\nHours: "
         + hours[index] + "\nWages: $" + result[index] + "\nGross Pay: $" + formattedGrossPay[index], "Result",
         JOptionPane.PLAIN_MESSAGE );
         index++;

         stringExcessHours[index] = Double.toString(excessHours[index]);
         buffer2.write(firstLine[index]);
         buffer2.newLine();
         buffer2.write(stringExcessHours[index]);
         buffer2.newLine();
     }

     buffer.close();
     buffer2.close();
     System.exit(0);

    }//end of try
    catch (IOException e ) { System.out.println(e); }
    }//end of ReadData

public static void main(String[] args)
{
    new ReadData();
}
}

现在,我的overtime.txt文件的输出如下所示:

0.0

0.0

我每次加班时都会得到0.0,而不是在第一行中打印姓名,而是打印空白行。

对于解决将数据正确写入overtime.txt文件这一问题的任何帮助,将不胜感激。

可怕的袋熊

在代码中,您要递增索引,然后读取数组

     index++;

     stringExcessHours[index] = Double.toString(excessHours[index]);
     buffer2.write(firstLine[index]);
     buffer2.newLine();
     buffer2.write(stringExcessHours[index]);
     buffer2.newLine();

改成

     stringExcessHours[index] = Double.toString(excessHours[index]);
     buffer2.write(firstLine[index]);
     buffer2.newLine();
     buffer2.write(stringExcessHours[index]);
     buffer2.newLine();

     index++;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章