简体   繁体   English

NumberFormatException:对于输入字符串:“8:00”

[英]NumberFormatException: For input string: “8:00”

So what is the problem with this?那么这有什么问题呢? it gives me this error它给了我这个错误

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)

here is my code:这是我的代码:

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;

    }

}

You're splitting string on " : " and your time string is as 8:00 , split should be like ":" just remove the blank space.您在" : "上拆分字符串,您的时间字符串为8:00 ,拆分应类似于":"只需删除空格即可。 So instead of tmpTime = strTemp.split(" : ");所以代替tmpTime = strTemp.split(" : "); , try its as: tmpTime = strTemp.split(":"); ,试试它的: tmpTime = strTemp.split(":");

you can try this你可以试试这个

String s=8.0;
String [] z=s.split(":");
String combine=z[0].concat(z[1));
double d= Double.parseDouble(combine);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM