-2

这是我的 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++;

      }
} 
 }

这种方法有什么问题......??

4

7 回答 7

0

我注意到的第一件事是您使用带有迭代器 i 的 while 而不是普通的 for 循环。其次,如果你想在循环之外使用任何对象,你必须先声明它。您确定要为姓和名设置两个不同的用户吗?该循环还建议您希望拥有多个用户,因此您需要一个数组或列表。

这是您更正的代码。

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);
        }
    } 
}
于 2013-07-29T13:23:35.207 回答
0

在 nextInt 之后读取 nextLine。返回字符被读取为名字的输入。

于 2013-07-29T13:17:26.250 回答
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);
}
于 2013-07-29T13:19:02.277 回答
0

InputLogic 类中有多个不正确的地方。其中几个:

1.您正在创建大量firstname,lastname对象,然后失去对它的引用。

2.为什么你需要不同的对象firstnamelastname。他们不应该属于一个人(同一个对象)

您可以考虑创建一个ArrayListArray多个用户对象

于 2013-07-29T13:19:14.350 回答
0

您正在创建两个不同的用户(称为名字和姓氏),而不是一个包含两个名称的用户。尝试类似:

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++;
}

而且您的用户类还需要包含字符串:

私人字符串名字;私人字符串姓氏;

于 2013-07-29T13:19:53.140 回答
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;
于 2013-07-29T13:20:00.630 回答
0

您正在创建两个用户实例;在第一个中,您只输入名字,在第二个中,您只输入姓氏。如下更正您的代码,以便为单个用户实例(即一个人)输入姓名和姓氏:

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++;
    }
}

但是,使用上面的代码,您将失去用户 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 中,您现在保存了所有用户,您可以随时访问它们,甚至在需要时将它们保存到数据库中。:)

于 2013-07-29T13:20:16.390 回答