所以我知道我的问题,但我似乎无法找到解决问题的方法,我想要做的是在用户提供他们的优先用户名后,我想打印旁边的phoneNumber输入,以及问题我正在遇到这个。
我会让用户输入,
用户名:PhoneNumber:现在他们可以输入
相反,我想要的是这样的:
用户名:来自方法参数.....的输入
phoneNumber:与上面相同
更新版本:
这是我得到的错误
userName无法解析为变量
public void createCustomer(String userName){
System.out.print("Enter username: ");
this.user = input.nextLine();
this.user = userName;
this.password = password;
this.address = address;
this.phoneNum = phoneNum;
this.email = email;
}
public static void main (String args[]){
CustomerUI customer = new CustomerUI();
Scanner input = new Scanner(System.in);
if(shouldCreate()== true){
customer.createCustomer(userName);
}
答案 0 :(得分:2)
输出提示后,您可以扫描每一行以输入用户名或电话号码。例如:
Scanner scanner = new Scanner(System.in);
System.out.println("Enter username: ");
String username = scanner.nextLine();
System.out.println("Username: " + username);
然后同样的电话号码。然后,您可以将值传递给createCustomer方法:
customer.createCustomer(username, phoneNumber, otherVar, anotherVar, lastVar);
编辑以解决更新的代码:您没有在main方法中定义用户名。如果我们查看您的代码,就会发生这种情况:
customer.createCustomer(userName)
创建客户。但是,此时,userName尚未在任何地方定义(例如String userName;
)"Enter username: "
打印到控制台user
类变量设置为在控制台中输入的行,起诉input.nextLine()
。但是,此时,我们没有在此方法中定义的名为input
的变量。它在main
中定义,但作为局部变量。因此,无法通过其他方法访问它。user
方法参数分配userName
类变量。这将覆盖input.nextLine()
值,使该行无效我建议:
Scanner input = new Scanner(System.in)
行放入createCustomer方法createCustomer
方法的参数,而不是每次都使用input.nextLine()
方法分配值可替换地:
Scanner input = new Scanner(System.in)
行保留在主方法input.nextLine()
方法调用移至main方法,并将其值分配给局部变量createCustomer
方法,然后将其分配给类变量答案 1 :(得分:0)
程序中的指令几乎总是按照它们的写入顺序执行(至少在方法中)。
所以你要做的就是先输出问题,然后再调用输入法。要更改它,您需要重新排序说明。
问题是,您直接将输入返回值传递给另一个方法。因此,您必须引入一些局部变量来存储这些返回值,直到将它们传递给下一个方法:
System.out.print("");
System.out.print("Username: ");
String userName =input.nextLine();
System.out.print("PhoneNumber: ");
String phoneNumber =input.nextLine();
customer.createCustomer(userName, phoneNumber,
input.nextLine(),input.nextLine(),input.nextInt());