【问题标题】:Java - Creation of loop with static code and objectJava - 使用静态代码和对象创建循环
【发布时间】:2013-12-22 19:21:50
【问题描述】:

我一直在搞清楚这个主要的编程概念……如何用循环替换重复的代码?

示例,:

System.out.println("Name:");
String name = input.next();

System.out.println("Age");
int age = input.nextInt();

System.out.println("Sex");
double sex= input.next();

System.out.println("Location:");
String location= input.next();

System.out.println("Subscribe:");
boolean subscribe= input.nextBoolean();
user.set(name, age, sex, location); // user object would hold this information
user.set(subscribe);

我已经创建了一个带有修改器和访问器的类来处理返回,但我不知道如何在不调用 user1、user2、user3...等的情况下为五个不同的用户编写上述代码。

我使用过最多可计数为 5 的 for 循环,但我不知道如何将其指向用户对象。

想法?指向一些参考资料真的会有所帮助。我正在尝试真正理解这个概念。

【问题讨论】:

  • 创建User 对象的集合(数组或ArrayList)。做一个循环。在每次循环迭代时,创建一个新的 User 对象,设置其值(请创建一些有意义的设置器)并将该对象添加到集合中。

标签: java list loops


【解决方案1】:

将此代码包装在一个函数中,该函数将从输入中获取数据,创建一个新用户并返回它:

 public User getUser() {
    Scanner input = new Scanner(System.in);

    User user = new User();

    System.out.println("Name:");
    String name = input.next();

    System.out.println("Age");
    int age = input.nextInt();

    System.out.println("Sex");
    double sex= input.next();

    System.out.println("Location:");
    String location= input.next();

    System.out.println("Subscribe:");
    boolean subscribe= input.nextBoolean();
    user.set(name, age, sex, location); // user object would hold this information
    user.set(subscribe);

    return user;
}

然后就可以使用了:

  • 你可以使用对象数组

    User[] users = new User[5];
    

然后你可以循环:

    for (int i=0; i<5; i++) {
        users[i] = getUser();
    }
  • 你可以使用对象的ArrayList

    List<User> list = new ArrayList<User>();
    
    for (int i=0; i<5; i++) {
        list.add(getUser());
    }
    

【讨论】:

  • 这正是我所缺少的!如果我使用对象数组,我还需要导入包吗?
  • 如果您使用 List 和 ArrayList,则需要导入它们。
  • 如果你有一个常规的数组,不需要导入任何特定的包。
  • @Melquiades - 我已经尝试在我的驱动程序和主类中使用您的代码变体,但是,我收到“用户”的找不到符号错误。此外,我的驱动程序类也出现了同样的错误。我使用的是 NetBeans IDE,两个文件都在同一个文件夹中。在我编译之前他们不会见面吗? User 函数应该在我的主类中可见。
  • 你有 user.set(subscribe);
【解决方案2】:

首先创建一个用户数组:

User[] users = new User[5] ; //Where 5 is the number of objects you want to store.
for (int i = 0 ; i < 5 ; i++){ //Fill it
  users[0] = new User();
}

现在您可以使用数组了:

for (User user : users){
  user.set(stuff);
  user.do();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-28
    • 1970-01-01
    • 2012-03-27
    • 1970-01-01
    • 2020-08-08
    • 2023-03-17
    • 2020-03-29
    • 1970-01-01
    相关资源
    最近更新 更多