我想從一個文本文件中讀取數據,並使用該文件中的一些文本來計算他們的加班工資,並將其輸出到一個稱爲加班的文件。文本。讀取,計算和寫入數據到/從.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加班費,而不是在第一行打印名字,空白裏ne被打印。
任何幫助解決這個問題的正確寫入數據到overtime.txt文件將不勝感激。
MessageDialog顯示正確的數字? – 2015-03-31 00:29:36
是的。以字符串形式顯示名稱。工時和工資總額顯示爲雙打。 – pHorseSpec 2015-03-31 00:34:13
我認爲@ScaryWombat解決方案將正確解決您的問題。 – 2015-03-31 00:35:02