基本上这就是我想做的事,
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"))
我是否需要创建数组才能使其工作?如果是这样,那将如何运作?
答案 0 :(得分:2)
取决于。如果对象具有状态(例如,表示数据库中的行),则必须为每次迭代创建它。但是如果你需要做的只是在对象中调用一个方法(即如果它是无状态的,(没有非静态和非最终的类变量或者是不可变的)),你应该只创建一个实例,并调用该方法在每次迭代中。一个例子是您的Scanner对象。您所做的只是在其中调用一个方法,因此您不是每次都创建一个新对象,而是在调用方法之前创建它,或者作为实例(类级别,理想私有)字段,以便可以重复使用它在所有方法中。以下是我重写代码的方法:
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
}
}
}
答案 1 :(得分:1)
您可以使用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"));
答案 2 :(得分:1)
我会使用像数组列表这样的东西。因此,无论方法如何操作,您都可以执行do / while,并将对象添加到列表中:
List<Object> list = new ArrayList<Object>();
Object name;
do {
name = new Object();
name.method();
list.add(name);
} while(answer.equalsIgnoreCase("Yes"));
这些方面的东西。
答案 3 :(得分:1)
如果您只是想让它运行程序(我假设方法),不会因任何原因而无需保存。
Object name;
Scanner scan = new Scanner(System.in);
String answer = "";
do {
name = new Object();
name.method();
System.out.print("Do you wish to continue entering data? ");
answer = scan.nextLine().toLowercase(); //Get the response
} while(!answer.equals("yes"); //If they didn't enter yes then the loop stops
此方法还可以节省内存,因为每次迭代循环都不会创建新的扫描程序或新内存。
答案 4 :(得分:0)
通常看起来像这样:
Collection<Object> objectCollection = new ArrayList<Object>();
for(int i = 0; i < objectMax; i++)
{
Object o = new Object();
o.doSomething();
objectCollection.add(o);
}
如果你不想存储任何东西,那就是:
for(int i = 0; i < objectMax; i++)
{
Object o = new Object();
o.doSomething();
}