0

我使用为我的学校作业提供的唯一用户名创建了一个基本的登录和注销系统(无数据库),但我在 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

4

2 回答 2

0

您正在返回错误级别 1,这是程序终止向操作系统返回错误的方式。我无法测试是因为我不使用 Windows,但您可以尝试System.exit(1)System.exit(0).

于 2019-02-03T09:45:13.967 回答
0

要获得不同的 beetwen 登录时间和注销时间,您可以使用Durationjava8 中的类:

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

Duration.between(loginTime, logoutTime).getSeconds();
于 2019-02-03T10:03:06.647 回答