我几天前刚开始学习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{
}
}
}
答案 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访问它们。
提示:您不需要为每个输入都使用新的扫描仪。你可以重复使用它:)