想要使用Setter Getter从Java中获取用户的多个输入

时间:2013-07-29 13:11:47

标签: java java.util.scanner setter getter

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

      }
} 
 }

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

7 个答案:

答案 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.您正在创建大量firstnamelastname个对象,然后忽略对它的引用。

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

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

答案 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);
        }
    } 
}