Ввод на дату повторяет Java

Работал над этим заданием. Вот мой код:

public void part2() {
    while (check) {
        try {
            System.out.println("Enter Payroll Period:\tSample: JAN-21-2016");
            payperiod = input.nextLine();
            period = payDate.parse(payperiod);
            payperiod = period.toString();
            Scanner error = new Scanner(System.in);
            String temp = "";
            int count = 0;
            char[] chtrs;
            Path file = Paths.get("Employee.txt");
            File location = new File(file.toString());
            FileReader employeeFile = new FileReader(location);
            BufferedReader lineReader = new BufferedReader(employeeFile);
            List<String> except = new ArrayList<>(), holdLast = new ArrayList<>();
            while ((temp = lineReader.readLine()) != null) {
                int cont = 0;
                for (char ime : temp.toCharArray()) {
                    char[] characters = new char[temp.toCharArray().length];
                    characters[cont] = temp.charAt(cont);
                    cont++;
                }
                except.add(temp);
                count++;
            }
            for (int i = 0; i < except.toArray().length && i == except.toArray().length; i++) {
                System.out.print("Enter number of days worked for " + except.toArray()[i] + ":\t");
                int numDays = input.nextInt();
                String thump = except.toArray()[i].toString() + " " + numDays;
                System.out.println(thump + " <- dude its in");
                holdLast.add(thump);
                System.out.println(except + " <- check errors except\n holdLast -> " + holdLast);
                check = false;
            }
        } catch (FileNotFoundException e) {
            System.err.println("NO RECORD EXISTS!");
            System.out.println("Create a new one first by choosing 1");
            MidActExam4 token = new MidActExam4();
            token.start();
        } catch (IOException e) {
            System.err.println(e.getMessage());
        } catch (Exception e) {
            System.err.println(e.getMessage() + e.getCause() + e.getStackTrace());
        }
    }
}

Выход:

XYZ Company
1 Employee Masterdata
2 Payroll Transactions
3 Compute Payroll
4 Exit
Select an option: F
Invalid Input!

XYZ Company
1 Employee Masterdata
2 Payroll Transactions
3 Compute Payroll
4 Exit
Select an option: 2
Enter Payroll Period:   Sample: JAN-21-2016
Jan-1-2014 //first input
Enter Payroll Period:   Sample: JAN-21-2016
jan-8-2013 //my input the second time
Enter Payroll Period:   Sample: JAN-21-2016 //this line keeps on running

1 ответ

Решение

Вы никогда не входите в свой внутренний цикл (таким образом, никогда не выходите из основного цикла):

for (int i = 0; i < except.toArray().length && i == except.toArray().length; i++) {
    ...
    check = false;
}

Потому что состояние i < except.toArray().length && i == except.toArray().length; никогда не достигается

Как целое число может быть меньше значения и в то же время быть равно этому значению...?

Ты наверное имел ввиду i < except.toArray().length как твой for состояние.

Другие вопросы по тегам