Java 如何使用循环创建新对象?

Java 如何使用循环创建新对象?,java,arrays,class,methods,Java,Arrays,Class,Methods,所以本质上这就是我想做的 do{ Object name = new Object();*Create new object* Object.method*run created object through a method* Scanner keyboard = new Scanner(System.in); System.out.println("Do you wish to continue entering data"); String ans

所以本质上这就是我想做的

do{
    Object name = new Object();*Create new object*
    Object.method*run created object through a method*

    Scanner keyboard = new Scanner(System.in);
    System.out.println("Do you wish to continue entering data");
    String answer = keyboard.nextLine();   
 } while (answer.equalsIgnoreCase("Yes"))

我是否需要创建阵列来实现此功能?如果是这样的话,它将如何工作?

通常情况下,它将如下所示:

Collection<Object> objectCollection = new ArrayList<Object>();  
for(int i = 0; i < objectMax; i++)  
{  
    Object o = new Object();  
    o.doSomething();  
    objectCollection.add(o);  
}
Collection objectCollection=new ArrayList();
对于(int i=0;i
如果您不想存储任何内容,只需执行以下操作:

 for(int i = 0; i < objectMax; i++)  
    {  
        Object o = new Object();  
        o.doSomething();  
    }
for(int i=0;i
通常情况下,它会如下所示:

Collection<Object> objectCollection = new ArrayList<Object>();  
for(int i = 0; i < objectMax; i++)  
{  
    Object o = new Object();  
    o.doSomething();  
    objectCollection.add(o);  
}
Collection objectCollection=new ArrayList();
对于(int i=0;i
如果您不想存储任何内容,只需执行以下操作:

 for(int i = 0; i < objectMax; i++)  
    {  
        Object o = new Object();  
        o.doSomething();  
    }
for(int i=0;i
您可以使用
ArrayList

List<Object> names = new ArrayList<Object>();
Scanner keyboard = new Scanner(System.in);
String answer;
do {
    Object o = new Object();
    o.method();
    names.add( o );

    System.out.println("Do you wish to continue entering data");
    answer = keyboard.nextLine();
} while (answer.equalsIgnoreCase("Yes"));
List name=new ArrayList();
扫描仪键盘=新扫描仪(System.in);
字符串回答;
做{
对象o=新对象();
o、 方法();
名称。添加(o);
System.out.println(“您希望继续输入数据吗”);
答案=键盘.nextLine();
}while(回答:是);

您可以使用
ArrayList

List<Object> names = new ArrayList<Object>();
Scanner keyboard = new Scanner(System.in);
String answer;
do {
    Object o = new Object();
    o.method();
    names.add( o );

    System.out.println("Do you wish to continue entering data");
    answer = keyboard.nextLine();
} while (answer.equalsIgnoreCase("Yes"));
List name=new ArrayList();
扫描仪键盘=新扫描仪(System.in);
字符串回答;
做{
对象o=新对象();
o、 方法();
名称。添加(o);
System.out.println(“您希望继续输入数据吗”);
答案=键盘.nextLine();
}while(回答:是);

我会使用数组列表之类的东西。因此,您将有自己的do/while,在完成方法所做的任何事情后,将对象添加到列表中:

List<Object> list = new ArrayList<Object>();
Object name;

do {

    name = new Object();
    name.method();

    list.add(name);

} while(answer.equalsIgnoreCase("Yes"));
List List=new ArrayList();
对象名称;
做{
name=新对象();
name.method();
列表。添加(名称);
}while(回答:是);

沿着这些线的东西。

我会使用数组列表之类的东西。因此,您将有自己的do/while,在完成方法所做的任何事情后,将对象添加到列表中:

List<Object> list = new ArrayList<Object>();
Object name;

do {

    name = new Object();
    name.method();

    list.add(name);

} while(answer.equalsIgnoreCase("Yes"));
List List=new ArrayList();
对象名称;
做{
name=新对象();
name.method();
列表。添加(名称);
}while(回答:是);

不,如果您只是想让它运行一个程序(我假设是一种方法),那么它就不必出于任何原因被保存


此方法还可以节省内存,因为在循环的每次迭代中,您都不会创建新的扫描仪或新内存。

不,如果您只是想让它运行一个程序,则不必出于任何原因进行保存(我假设使用此方法)


此方法还可以节省内存,因为在循环的每次迭代中都不会创建新的扫描仪或新内存。

视情况而定。如果对象具有状态(例如,表示数据库中的一行),则必须为每次迭代创建它。但是,如果您只需要在对象中调用一个方法(即,如果它是无状态的(没有非静态和非最终类变量,或者是不可变的)),那么您应该只创建一个实例,并在每次迭代中调用该方法。扫描仪对象就是一个例子。您所做的只是在其中调用一个方法,因此,您不必每次都创建一个新对象,而是在调用该方法之前创建它,或者作为一个实例(类级别,理想情况下为私有)字段,以便它可以在所有方法中重复使用。以下是我将如何重新编写您的代码:

public class MyClass {

private final Scanner scanner = new Scanner(System.in);

public void doSomething() {
    Object object = new Object();
    do {
        // call your method here
        // object.yourMethod();

        System.out.println("Do you wish to continue entering data?");
    } while (scanner.nextLine().equalsIgnoreCase("Yes"));
}
}

OTHO如果要存储与创建的每个实例关联的状态,则可以按如下方式执行:

public class MyClass {

private final Scanner scanner = new Scanner(System.in);

public void doSomething() {
    List<Object> data = new ArrayList<Object>();
    Object object;
    do {
        // call your method here
        object = new Object();
        // object.yourMethod();
        data.add(object);

        System.out.println("Do you wish to continue entering data?");
    } while (scanner.nextLine().equalsIgnoreCase("Yes"));

    for(Object d : data) {
        // do something with the info you captured
    }
}
公共类MyClass{
专用最终扫描仪=新扫描仪(System.in);
公共无效剂量测定法(){
列表数据=新的ArrayList();
对象对象;
做{
//在这里调用您的方法
对象=新对象();
//object.yourMethod();
数据。添加(对象);
System.out.println(“是否继续输入数据?”);
}while(scanner.nextLine().equalsIgnoreCase(“是”);
用于(对象d:数据){
//用你捕获的信息做点什么
}
}

}视情况而定。如果对象具有状态(例如,表示数据库中的一行),则必须为每次迭代创建它。但是,如果您只需要在对象中调用一个方法(即,如果它是无状态的(没有非静态和非最终类变量,或者是不可变的)),那么您应该只创建一个实例,并在每次迭代中调用该方法。扫描仪对象就是一个例子。您所做的只是在其中调用一个方法,因此,您不必每次都创建一个新对象,而是在调用该方法之前创建它,或者作为一个实例(类级别,理想情况下为私有)字段,以便它可以在所有方法中重复使用。以下是我将如何重新编写您的代码:

public class MyClass {

private final Scanner scanner = new Scanner(System.in);

public void doSomething() {
    Object object = new Object();
    do {
        // call your method here
        // object.yourMethod();

        System.out.println("Do you wish to continue entering data?");
    } while (scanner.nextLine().equalsIgnoreCase("Yes"));
}
}

OTHO如果要存储与创建的每个实例关联的状态,则可以按如下方式执行:

public class MyClass {

private final Scanner scanner = new Scanner(System.in);

public void doSomething() {
    List<Object> data = new ArrayList<Object>();
    Object object;
    do {
        // call your method here
        object = new Object();
        // object.yourMethod();
        data.add(object);

        System.out.println("Do you wish to continue entering data?");
    } while (scanner.nextLine().equalsIgnoreCase("Yes"));

    for(Object d : data) {
        // do something with the info you captured
    }
}
公共类MyClass{
专用最终扫描仪=新扫描仪(System.in);
公共无效剂量测定法(){
列表数据=新的ArrayList();
对象对象;
做{
//在这里调用您的方法
对象=新对象();
//object.yourMethod();
数据。添加(对象);
System.out.println(“是否继续输入数据?”);
}while(scanner.nextLine().equalsIgnoreCase(“是”);
用于(对象d:数据){
//用你捕获的信息做点什么
}
}

}

这要看情况而定;您想保留创建的每个对象,还是仅保留最后一个这样的对象?这取决于;您希望保留创建的每个对象,还是仅保留最后一个这样的对象?