2015-04-23 55 views
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; 

    } 

} 
+1

“”8:00“'不是有效的”整数“。如果字符串不包含可分析的整数,则Integer.parseInt会抛出一个NumberFormatException异常。“ – mkobit

+0

也许尝试使用'String#split'来分割':'的值并分别解析每一边。 – MadProgrammer

回答

1

" : "是分割字符串和您的时间字符串是8:00,分裂就应该像":"只是删除空格。因此,而不是tmpTime = strTemp.split(" : ");,请尝试其为:tmpTime = strTemp.split(":");

+0

啊我现在明白了谢谢你:D –

相关问题