2011-12-05 4 views
0

그래서 기본적으로이 루프를 사용하여 새 객체를 만드는 방법은 무엇입니까?

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

내가이 일을하는 배열을 만들 필요가 있는가, 내가 원하는 무엇인가? 그렇다면 어떻게 작동할까요?

+2

당신은 모든 객체를 생성하고 싶습니까, 아니면 마지막 객체만을 유지하고 싶습니까? –

답변

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 

이 방법을 사용하면 루프의 각 반복마다 새 스캐너 또는 새 메모리를 만들지 않으므로 메모리가 절약됩니다.

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

나는 배열 목록과 같은 것을 사용할 것입니다. 그 라인을 따라

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

do { 

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

    list.add(name); 

} while(answer.equalsIgnoreCase("Yes")); 

뭔가 : 당신의 방법은 목록에 개체를 추가 않는 동안 어떤의 완료에 따라서 당신은/당신의 할 일을 할 것입니다.

2

에 따라 다릅니다. 객체에 상태 (예 : 데이터베이스의 행을 나타냄)가 있으면 각 반복마다 객체를 만들어야합니다. 그러나 당신이해야 할 일은 객체에서 메소드를 호출하는 것입니다 (즉, 상태가없고 (비 정적 및 비 최종 클래스 변수가 없거나 불변 인 경우)), 인스턴스 하나를 작성하고 메소드를 호출해야합니다 각 반복에서. 그 예가 Scanner 객체입니다. 당신이하고있는 일은 그 안에 메소드를 호출하는 것이므로, 매번 새로운 객체를 생성하는 대신 메소드를 호출하기 전에 객체를 생성하거나 인스턴스 (클래스 레벨, 이상적으로는 private) 필드로 재사용 할 수 있습니다 모든 방법에서. 여기에 내가 코드를 다시 작성합니다 방법은 다음과 같습니다 당신이 작성하는 각 인스턴스와 연결된 상태를 저장하려면

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

}

오토를, 당신은 이런 식으로 할 것 :

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 
    } 
} 

}

관련 문제