Как исправить ошибку при входе в систему из-за ошибки цикла (без базы данных) (также есть код о времени сеанса)?
Я создаю базовую систему входа и выхода (без базы данных) с единственным именем пользователя, заданным для моей школьной домашней работы, но у меня есть проблемы с циклами while, а также с временем сеанса.
Я попытался скопировать и вставить группу кодов в разные части этого основного кода, чтобы получить ожидаемый результат, но он оказался немного ошибочным. Я пытался найти в интернете время сеанса, но ничего не получил.
while (login = true){
try {
System.out.println("Enter your name:");
String name = cue.nextLine();
System.out.println("--------------------");
System.out.println("");
System.out.println("Date and Time of Login:");
System.out.println(dtf.format(now));
System.out.println("");
System.out.println("--------------------");
System.out.println();
System.out.println("Enter your name to log out:");
String logout = cue.nextLine();
System.out.println("");
if (logout.equals(name)){
System.out.println("--------------------");
System.out.println("");
System.out.println("Date and Time of Logout:");
System.out.println(dtf.format(now));
System.out.println("Session Time:");
/*can you also please tell me what code to tell the gap between the
login time and log out time?*/
System.out.println("");
System.out.println("--------------------");
login = false;
} else {
login = true;
}
} catch (Exception e){
cue.nextLine();
} finally{
System.out.println("Do you want to register again? 0 for yes and 1 for no");
int no = cue.nextInt();
if (no==0) {
login = true;
} else if (no==1) {
System.exit(1);
} else {
System.out.println("1 or 0 only!");
}
}
}
- Это должен быть ожидаемый результат:
если имя верное:
Enter your name:
nmae
--------------------
Date and Time of login:
2019/02/03 16:38:46
--------------------
Enter your name to log out:
nmae
--------------------
Date and Time of logout:
2019/02/03 16:38:46
Session Time:
(This must show how many minutes and seconds a client uses the program)
--------------------
Do you want to register again? 0 for yes and 1 for no
0
Enter your name:
неверно и исправлено позже:
Enter your name:
name
--------------------
Date and Time of login:
2019/02/03 16:38:46
--------------------
Enter your name to log out:
nmae
Enter your name to log out:
name
но оказывается, что во втором цикле, третьем цикле и т. д. программа просит меня "ввести ваше имя для выхода из системы" и "Хотите ли вы зарегистрироваться снова? 0 для" да "и 1 для" нет ". Часть "введите свое имя" печатается вместо того, чтобы спрашивать мое имя.
и затем, когда я ввожу 0, чтобы выйти, эта ошибка обнаружилась C:\Users\DELL\AppData\Local\NetBeans\Cache\10.0\executor-snippets\run.xml:111: The following error occurred while executing this line:
C:\Users\DELL\AppData\Local\NetBeans\Cache\10.0\executor-snippets\run.xml:94: Java returned: 1
2 ответа
Чтобы получить разницу между временем входа и выхода из системы, вы можете использовать Duration
класс из java8:
loginTime = LocalDateTime.now();
...
logoutTime = LocalDateTime.now();
Duration.between(loginTime, logoutTime).getSeconds();
Вы возвращаете уровень ошибки 1, то есть способ завершения программы, возвращающей ошибку в ОС. Я не могу проверить это, так как я не использую Windows, но вы можете попробовать заменить System.exit(1)
с System.exit(0)
,