Как исправить ошибку при входе в систему из-за ошибки цикла (без базы данных) (также есть код о времени сеанса)? - PullRequest
0 голосов
/ 03 февраля 2019

Я создаю базовую систему входа в систему и выхода из системы (без базы данных) с единственным именем пользователя, заданным для моей школьной домашней работы, но у меня есть проблемы с циклами 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 ]

0 голосов
/ 03 февраля 2019

Чтобы получить разницу между временем входа и выхода из системы, вы можете использовать класс Duration из java8:

loginTime = LocalDateTime.now();
...
logoutTime = LocalDateTime.now();

Duration.between(loginTime, logoutTime).getSeconds();
0 голосов
/ 03 февраля 2019

Вы возвращаете уровень ошибки 1, то есть способ, которым программа завершает возврат ошибки в ОС.Я не могу проверить это, поскольку я не использую Windows, но вы можете попробовать заменить System.exit(1) на System.exit(0).

...