在java中初始化for循环中的对象?
假设Sports
,School
,Home
是Java中的类。 与Home
有一种方法,例如在java中初始化for循环中的对象?
void add(Sports t1, School t2);
这是我想做的事:
Sports s1 = new Sports("value1");
School t2 = new School("value1");
Home h = new Home();
h.add(s1,t2);
现在的问题是,我想重复这些步骤太多次了。与h
保持不变。因此h.add()
被多次调用,不同的对象作为参数,值来自使用forloop的外部值。 有人可以告诉我如何初始化这些对象,并呼吁 添加方法在e,g a for循环中使用不同的对象名称在 每次迭代?
这里是你想要使用数组(或列表)的地方。
实施例:
Home h = new Home();
Sports[] sports = new Sports[10];
School[] schools = new School[10];
for (int i =0; i< sports.length; i++) {
h.add(sports[i], schools[i]);
}
在上面的例子中,将需要一种方法来初始化sports
和schools
数组的内容。
或许高于这个细微变化是你所需要的:
Home h = new Home();
String[] sports = // existing array of sport names
String[] schools = // array of school names
for (int i =0; i< sports.length; i++) {
h.add(new Sports(sports[i]), new School(schools[i]));
}
这里我们使用的学校和体育名阵列创建所有被添加到Home
对象。
谢谢,这个作品。 – Johnydep
创建体育数组和学校
Home h = new Home();
int count = 10;
Sports[] sports = new Sports[count];
School[] school = new School[count];
for (int i=0;i<count;i++)
{
sports[i] = new Sports();
school[i] = new School();
h.add(sports[i],school[i]);
}
这取决于。在代码中,我给你..在for循环后,你仍然有10所学校和体育..如果你不想要他们,那么你只需要一个for循环像jjnguy说 –
如果你想创建许多Home
对象,每个对象都有一个Sports
和School
对象,那么你会希望使用array或collection class存储这些对象。让我们假设你正在使用的阵列来存储Home
对象,那么它可能是这个样子:
// Array to store 10 Home objects
Home[] homes = new Home[10];
// Initialize each object in the array
for (int i = 0; i < homes.length; ++i) {
homes[i] = new Home();
// Create a Sports and a School object
Sports sports = new Sports();
School school = new School();
// Add those to the i'th Home object
homes[i].add(sports, school);
}
编辑或者,你要创建只是一个Home
对象并添加多个Sports
和Schools
对象到它?然后,它的更简单:
Home home = new Home();
for (int i = 0; i < 10; ++i) {
// Create a Sports and a School object
Sports sports = new Sports();
School school = new School();
home.add(sports, school);
}
他澄清说,“家”保持不变在他的问题。 – jjnguy
你的意思是这样的:
Home h = new Home();
while (CONDITION) {
Sports t1 = new Sports();
School s1 = new School();
h.add(t1, s1);
}
初始化所需的名称的数组,然后用它来播种Home
实例。
Home h = new Home();
String[] names = new String[5];
// populate names here
// ...
// now populate Home
for (String name : names)
{
h.add(new Sports(name), new School(name));
}
谢谢,但你不认为我会在一个循环中完成任务时使用两个循环。 – Johnydep
如果你想在'h.add'的输入中使用不同的值,那么你需要比迄今提供的更多的逻辑。如果每个'h.add'使用相同的'Sports'和'School'名字,那么你是正确的,只需要一个循环。 –
谢谢你的答案,你认为这也是一个正确的做法:
Sports s1;
School t2;
Home h = new Home();
for(int i=0; i<mysize; i++){
s1 = new Sports("value"); //so i will change it as per the logic
t2 = new School("value");
h.add(s1, t2);
}
我不知道,虽然如果这是正确的做法。
'value'应该是一个基于for循环的某个条件给出值的变量,而不是一个表示“value”的String,但是应该可以。 –
@Anthony是的,你是对的。实际上,这些值将作为字符串从JDBC连接传入,并将添加到此循环中的这些对象中 – Johnydep
这不是很清楚你的意思。循环的每次迭代有什么不同?请注意,* variable *名称与* object *名称(对象不具有名称)非常不同。 –
从技术上讲,它们确实有名称(或者至少是系统标识,这是一个特定意义上的名称)。你几乎不想知道他们,尤其是因为你不能通过名字来查看他们。 –