0
那么这有什么问题? 它给了我这个错误NumberFormatException:对于输入字符串:“8:00”
Exception in thread "main" java.lang.NumberFormatException: For input string: "8:00"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at payroll.main(payroll.java:49)
这里是我的代码:
import java.io.*;
import java.text.*;
public class payroll{
static BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
public static void main(String [] args) throws IOException {
String EmpCode = "";
while(!EmpCode.equals('0')) {
System.out.print("Enter Employee Code: ");
EmpCode = in.readLine();
String EmpInfo[] = getInfo(EmpCode);
double basicsalary = Double.parseDouble(EmpInfo[3]);
System.out.println("READ ME FIRST : ****************************");
System.out.println(" * Input for Regular Hours — > 8:00 – 17:00 ");
System.out.println(" * Input for OT Hours — > 17:30 – 20:30 ");
System.out.println(" * OT Income = (Basic Salary/8) * 1.1 ");
System.out.println(" * Holiday = (Basic Salary/8) * 1.1 ");
System.out.println("*******************************************");
System.out.println("============= Employee Information ==========");
System.out.println("Employee Code: " + EmpInfo[0]);
System.out.println("Employee Name: " + EmpInfo[1]);
System.out.println("Employee Position: " + EmpInfo[2]);
System.out.println("Employee Basic Salary: " + EmpInfo[3]);
System.out.println("=======================================");
String days[] = {"Monday","Tuesday","Wednesday","Thursday","Friday"};
double timeInOut[][] = new double[2][5];
double otInOut[][] = new double[2][5];
String strTemp = "";
String tmpTime[] = new String[2];
double tmpHours, totalHours = 0, tmpRegIncome = 0, totalRegIncome = 0,
tmpOTHours,totalOTHours = 0, tmpOTIncome, totalOTIncome = 0;
for(int i = 0; i < 5; i++){
System.out.print("Time In for " + days[i] + ": ");
strTemp = in.readLine();
tmpTime = strTemp.split(" : ");
timeInOut[0][i] = Double.parseDouble(tmpTime[0]) + (Double.parseDouble(tmpTime[1])/60);
System.out.print("Time Out for " + days[i] + " : ");
strTemp = in.readLine();
tmpTime = strTemp.split(" : ");
timeInOut[1][i] = Double.parseDouble(tmpTime[0]) + (Double.parseDouble(tmpTime[1])/60);
System.out.print("is " + days[i] + " Holiday?: ");
String isHoliday = in.readLine();
System.out.print("OT Time In for " + days[i] + " : ");
strTemp = in.readLine();
tmpTime = strTemp.split(" : ");
otInOut[0][i] = Double.parseDouble(tmpTime[0]) + (Double.parseDouble(tmpTime[1])/60);
System.out.print("OT Time Out for " + days[i] + " : ");
strTemp = in.readLine();
tmpTime = strTemp.split(" : ");
otInOut[1][i] = Double.parseDouble(tmpTime[0]) + (Double.parseDouble(tmpTime[1])/60);
if(timeInOut[0][i] < 8)timeInOut[0][i] = 8;
if(timeInOut[1][i] > 17)timeInOut[1][i] = 17;
if(otInOut[0][i] < 17.5 && otInOut[0][i] != 0)otInOut[0][i] = 17.5;
if(otInOut[1][i] > 20.5)otInOut[1][i] = 20.5;
tmpHours = timeInOut[1][i] - timeInOut[0][i];
tmpOTHours = otInOut[1][i] - otInOut[0][i];
if(tmpHours > 4)tmpHours--;
if(isHoliday.equals("Yes")){
totalOTHours += tmpHours;
totalOTIncome += tmpHours * ((basicsalary/8) * 1.1);
totalHours += tmpHours;
tmpRegIncome = tmpHours * (basicsalary/8);
}else{
totalHours += tmpHours;
tmpRegIncome = tmpHours * (basicsalary/8);
}
totalOTHours += tmpOTHours;
totalOTIncome += tmpOTHours * ((basicsalary/8) * 1.1);
totalRegIncome += tmpRegIncome;
}
double grossincome = totalRegIncome + totalOTIncome;
DecimalFormat df = new DecimalFormat("#.##");
System.out.println("=========== Total Output ==============");
System.out.println("Total work hours: ” + df.format(totalHours)");
System.out.println("Total regular income: ” + df.format(totalRegIncome)");
System.out.println("Total OT hours: ” + df.format(totalOTHours)");
System.out.println("Total OT Income: ” + df.format(totalOTIncome)");
System.out.println("Gross Income: ” + df.format(grossincome)");
System.out.println("=====================================");
}
}
static String[] getInfo(String EmpCode){
String getInfo[] = new String [4];
String strLine;
int ctr =0;
boolean isFound = false;
try{
FileInputStream fstream = new FileInputStream("payroll.txt");
DataInputStream dstream = new DataInputStream(fstream);
BufferedReader br = new BufferedReader(new InputStreamReader(dstream));
while((strLine = br.readLine()) != null && ctr < 4){
if(strLine.equals(EmpCode))isFound = true;
if(isFound){
getInfo[ctr] = strLine;
ctr++;
}
}
br.close();
}catch(IOException e){
System.out.println("Error: " + e.getMessage());
}
return getInfo;
}
}
“”8:00“'不是有效的”整数“。如果字符串不包含可分析的整数,则Integer.parseInt会抛出一个NumberFormatException异常。“ – mkobit
也许尝试使用'String#split'来分割':'的值并分别解析每一边。 – MadProgrammer