这是我的User.java类。
public class User {
private String First_Name;
private String Last_Name;
public String getFirst_Name() {
return First_Name;
}
public void setFirst_Name(String first_Name) {
First_Name = first_Name;
}
public String getLast_Name() {
return Last_Name;
}
public void setLast_Name(String last_Name) {
Last_Name = last_Name;
}
public User(String first_Name, String last_Name) {
super();
First_Name = first_Name;
Last_Name = last_Name;
}
public User() {
// TODO Auto-generated constructor stub
}
}
我想将来自不同用户的输入作为名字和姓氏。为此,我将类Input.java作为:
public class InputLogic {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
System.out.println("How many name you want to enter:");
int num = sc.nextInt();
int i=0;
while(i < num){
User firstname = new User();
System.out.println(i + "Enter First name:");
String firsttemp = sc.nextLine();
firstname.setFirst_Name(firsttemp);
User lastname = new User();
System.out.println(i + "Enter Last name:");
String lasttemp = sc.nextLine();
lastname.setLast_Name(lasttemp);
i++;
}
}
}
这种方法有什么问题...... ??
答案 0 :(得分:0)
在nextInt之后读取nextLine。返回字符也被读作第一个名称的输入。
答案 1 :(得分:0)
当你知道你班级的对象时如果没有
,用户就毫无意义private String First_Name;
private String Last_Name;
为什么不把它放在构造函数中?
public User(String fname, String lname) {
this.First_Name = fname;
this.Last_Name = lname;
}
然后在从std输入读取fname和lname后创建对象
User[] userList = new User[num];
for(int i=0;i<userList.length();i++) {
userList[i] = new User(fname,lname);
}
答案 2 :(得分:0)
InputLogic类中的多个内容不正确。他们几个:
1.您正在创建大量firstname
,lastname
个对象,然后忽略对它的引用。
2.为什么您需要firstname
,lastname
的不同对象。他们不应该属于一个人(同一个对象)
您可以考虑创建ArrayList
或Array
个用户对象
答案 3 :(得分:0)
您正在创建两个不同的用户(称为firstname和lastname),而不是包含两个名称的一个用户。尝试类似:
while(i < num){
System.out.println(i + "Enter First name:");
String firstname = sc.nextLine();
System.out.println(i + "Enter Last name:");
String lastname = sc.nextLine();
User user = new User(firstname, lastname);
i++;
}
此外,您的用户类还需要包含字符串:
private String First_Name; private String Last_Name;
答案 4 :(得分:0)
您的方法存在多个错误:
User xy = new User() //creates a new user
你是为Firstname和Lastname做的,这是错误的。
此外,您还在while循环中创建实例。这个循环结束后 你的实例将会消失。
为了保存多个用户,您可以使用数组
在检查了要插入的用户数量后,您可以创建一个数组
User[] users = new User[UserInput]
在您的while循环中,您可以检查输入并执行以下操作
users[i] = new User();
users[i].firstname = firstnameinput;
users[i].lastname = lastnameinput;
答案 5 :(得分:0)
您正在创建两个User实例;在第一个名称中,您只输入名字,而在第二个名称中,您只输入姓氏。按如下方式更正您的代码,以便为单个User实例(即一个人)输入名称和姓氏:
public class InputLogic {
public static void main(String args[])
{
Scanner sc = new Scanner(System.in);
System.out.println("How many name you want to enter:");
int num = sc.nextInt();
int i=0;
while(i < num)
{
User p = new User();
System.out.println(i + "Enter First name:");
String firsttemp = sc.nextLine();
System.out.println(i + "Enter Last name:");
String lasttemp = sc.nextLine();
p.setFirst_Name(firsttemp);
p.setLast_Name(lasttemp);
i++;
}
}
但是,使用上面的代码,您将失去User p的含义,因为每次循环重新启动时都会覆盖p的信息。
至少按如下方式将用户保存在ArrayList中:
public class InputLogic {
public static void main(String args[])
{
ArrayList<User> listOfUsers = new ArrayList<User>();
Scanner sc = new Scanner(System.in);
System.out.println("How many name you want to enter:");
int num = sc.nextInt();
int i=0;
while(i < num)
{
User p = new User();
System.out.println(i + "Enter First name:");
String firsttemp = sc.nextLine();
System.out.println(i + "Enter Last name:");
String lasttemp = sc.nextLine();
p.setFirst_Name(firsttemp);
p.setLast_Name(lasttemp);
listOfUsers.add(p);
i++;
}
}
在ArrayList中,您现在已经保存了所有用户,您可以随时访问它们,甚至可以根据需要将它们保存到数据库中。 :)
答案 6 :(得分:0)
我注意到的第一件事是你使用iterator而不是正常的循环。 其次,如果你想使用循环之外的任何对象,你必须先声明它。 您确定要为姓氏和名字设置两个单独的用户吗? 循环还建议你想拥有多个用户,所以你需要一个数组或列表。
以下是您的代码更正。
public class InputLogic {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
User users[];
System.out.println("How many name you want to enter:");
int num = sc.nextInt();
users = new User[num];
for (int i=0; i<num; i++) {
users[i] = new User();
System.out.println(i + " Enter First name:");
String temp = sc.nextLine();
users[i].setFirst_Name(temp);
System.out.println(i + " Enter Last name:");
temp = sc.nextLine();
users[i].setLast_Name(temp);
}
}
}