2013-12-22 20 views
-1

我一直在搞清楚这个主要的编程概念......我如何用循环代替重复的代码?Java - 用静态代码和对象创建循环

样品,:

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); 

我已创建了变异符和存取一个类来处理的回报,但我想不出怎么不写了五个不同的用户上面的代码,而不调用用户1,用户2,用户3等等。我已经玩过使用for循环,最多可以计算五次,但我不知道如何将它指向用户对象。

想法?对某些参考文献的指导方向确实有帮我试图真正理解这个概念。

+0

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

回答

3

总结这段代码的功能,将从输入获取数据,创建一个新用户,并将其返回:

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()); 
    } 
    
+0

这正是我错过的!如果我使用对象数组,是否还需要导入包? – kennyrogersjr

+0

如果你使用List和ArrayList,你需要导入这些。 – user2910265

+0

如果你有一个常规的数组,不需要导入任何特定的包。 – Melquiades

0

首先创建用户的数组:

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(); 
}