使用类的Java登录程序

Posted

技术标签:

【中文标题】使用类的Java登录程序【英文标题】:Java Login program using a class 【发布时间】:2014-09-01 04:56:33 【问题描述】:

我必须使用公共类和主驱动程序控制台创建一个简单的登录程序。

这是我的代码:

主要

import java.util.Scanner;
public class main  


    public static void main(String[] args) 
    

      Scanner input = new Scanner (System.in);  

      String username;
      String password;


      System.out.println("Welcome to your Social network site!");
      System.out.println("\nEnter your username and password to login to your account.");    

      System.out.println("Username: ");
        username = input.nextLine();

      System.out.println("Password: ");
        password = input.nextLine();

        UserAccount login = new UserAccount(username, password);

        if(login.checkPassword())
            System.out.println("You are logged in!");
        else
            System.out.println("The username and password you entered are incorrect.");
    



用户类

public class UserAccount 


    private String username;
    private String password;
    private String[][] accounts = "anthony", "supernova","steve", "java1";

    public UserAccount(String username, String password) 
    
        String user = username;
        String pass = password;
        boolean active;
    

    public boolean checkPassword()
    

        if((username.equals(accounts[0][0])) && (password.equals(accounts[0][1])))
            return true;
        else
            return false;
    

    public void deactivateAccount()
    
        boolean active = false;
    


问题是我在输入正确信息后不断收到此错误: 线程“main”中的异常 java.lang.NullPointerException 在 UserAccount.checkPassword(UserAccount.java:19) 在 main.main(main.java:25)

【问题讨论】:

【参考方案1】:

您没有在 UserAccount 构造函数中分配对象属性。更改如下:

public UserAccount(String username, String password) 
    this.username = username;
    this.password = password;

此外,如果您打算使用该 active 布尔值做某事,您还必须将其作为属性添加到您的类中。像现在这样在构造函数/方法中声明它是没有效果的。

【讨论】:

【参考方案2】:

您的 UserAccount 构造函数应该正在初始化类变量。像这样-

 public UserAccount(String username, String password) 
    
        this.username = username;
        this.password = password;
        boolean active;
    

HTH

【讨论】:

【参考方案3】:
public UserAccount(String username, String password) 

   this.username = username;
   this.password = password;
   // boolean active;   //not a good coding standard 
   //in constructor only initialization of class variables  must be done


this will show how to use constructor-- 良好的编码标准 (重要:构造函数只能用于初始化,不能用于声明)

【讨论】:

以上是关于使用类的Java登录程序的主要内容,如果未能解决你的问题,请参考以下文章

String类——Java中常见的类(模拟登录案例练习)

如何使用 Windows 登录进行单点登录和桌面 Java 应用程序的 Active Directory 条目?

Java有关多态类的小程序

Java多线程原理及Thread类的使用

JavaWeb:完成用户登录注册案例的实现,SqlSessionFactory工具类的抽取

在 Java 应用程序中检查使用 Active Directory 登录的用户