如何获取我最近输入的用户输入数据?

时间:2015-06-10 12:07:42

标签: java

我几天前刚开始学习Java,我想创建一个程序来创建一个帐户,存储它然后如果我们输入确切的用户名和密码,那么它会说"登录成功&#34请不要介意我给变量和类命名的方法。我的问题出在我的" crttacc" class,我已经设置了2个get方法来获取un和pa变量。但是,在我的main方法中运行crttacc中的create方法之后,输入数据似乎消失了并且没有存储在un,pa变量中,就像当我试着将它们打印出来进行检查,它会返回" null"。我是新手,所以我不太确定我的问题是否足够明确,我希望你们能够帮帮我。谢谢你。 这是我的密码:(请不要笑:D)

import java.util.Scanner;
class crttacc {
    String pa;
    String un;

    void create() {
        Scanner unin = new Scanner(System.in);
        Scanner passin = new Scanner(System.in);
        System.out.println("enter the user name: ");
        String l1 = unin.nextLine();
        System.out.println("enter the password: ");
        String l2 = passin.nextLine();
        l1=un;
        l2=pa;

    }
    String getpass(){
        return un;
    }
    String getuser(){
        return pa;
    }
}
class loginn {
    ;

    void logingin() {
    crttacc acc1 = new crttacc();
    String pass = acc1.getpass();
    String user = acc1.getuser();
    System.out.println(pass);
    System.out.println(user);
    Scanner passwordinput = new Scanner(System.in);
    Scanner usernameinput = new Scanner(System.in);
    System.out.println("username:");
    String line1 = usernameinput.nextLine();
    System.out.println("Password:");
    String line2 = passwordinput.nextLine();
    String d1=line1;
    String d2=line2;
    if(d1.equals(pass) && d2.equals(user)) {
        System.out.println("login successfull");
    }
    else {
        System.out.println("try again");
}
}   
}
public class login3 {
    public static void main(String[] args) {
        Scanner com = new Scanner(System.in);
        System.out.println("enter your command: create account or login");
        String com1 = com.nextLine();
        String l1=com1;
        if(com1.equals("create account")) {
            crttacc acc1 = new crttacc();
            acc1.create();

        }
        Scanner com2 = new Scanner(System.in);
        System.out.println("would you like to login now? y/n");
        String cm2 = com2.nextLine();
        String l2=cm2;
        if(l2.equals("y")) {
            loginn log1 = new loginn();
            log1.logingin();

        }
        else{

        }
}
}

2 个答案:

答案 0 :(得分:1)

它的:

un=l1;
pa=l2;   
Create()方法

中的

答案 1 :(得分:1)

问题似乎是,您将通过扫描仪获得的输入数据存储在l1和l2中。然后给l1和l2变量赋予un和pa的值(此时为null)。在方法结束时,局部变量l1和l2被丢弃,并且你的un和pa没有任何改变。

你可能想要这样的东西:

void create() {
    Scanner scanner = new Scanner(System.in);
    System.out.println("enter the user name: ");
    String l1 = scanner.nextLine();
    System.out.println("enter the password: ");
    String l2 = scanner.nextLine();
    this.un = l1;
    this.pa = l2;
}

通过这个,您可以在字段un和pa中存储l1和l2的值,并可以通过getter访问它们。

提示:您不需要为每个输入都使用新的扫描仪。你可以重复使用它:)