2014-03-13 3 views
0

이 질문에 대한 답변이 분명하면 사과드립니다! 하나의 클래스에서 생성자의 숫자 배열로 필드 번호를 초기화 한 다음 테스트 클래스에서 호출하고 문자열로 표시하려고 시도했지만 결과가 계속 반환됩니다. null ... 어떤 도움을 주시면 감사하겠습니다! 다음과 같이내 테스트 메소드가 실행될 때 null이 반환됩니다

public class Test { 
    public static void main(String[]args){ 
     Double[] d = {2.4, 3.6, 4.3, 5.1}; 
     NumberList numbers = new NumberList(d); 
     numbers.neg(); 

     System.out.print(numbers.asString()); 
    } 
} 

죄송 음수 인 NumberList 클래스의 객체를 생성

public class NumerbList implements Number { 
    ArrayList<Number> numbers = new ArrayList<Number>(); 

    //constructor taking array of type double as parameter 
    public NumberList(Double[] numberlist){ 
     for(int i=0; i<numbers.size(); i++){ 
      NumberDouble numberd = new NumberDouble(numberlist[i]); 
      numbers.add(numberd); 
     } 
    } 

및 테스트 클래스 :

는 생성자가 나의 클래스입니다

public void neg(){ 
    for(int i=0; i < numbers.size(); i++){ 
      numbers.get(i).neg(); 
    } 
} 

및 문자열 :

,
@Override 
public String asString(){ 
    return numbers.toString(); 
} 

나는 NEG에

 for(int i=0; i < numberlist.length(); i++;) 

를 넣어해야 하는가? 미리 감사드립니다.

+0

'neg()'과'asString()'이하는 것을 보여주지 않았습니다. –

+2

리스트가 비어 있기 때문에 생성자를 호출 할 때'size()'는 0입니다. 그러므로 당신은 아무 것도 추가하지 않습니다. 루프의 조건을 'i

답변

2

문제는 for 루프가 초기화 된 빈 ArrayList를 크기로 사용한다는 것입니다.

이에 루프를 변경

:

for (int i = 0; i < numberlist.length; i++) { 
    // your loop logic here 
} 

희망이 도움이!

2

for(int i=0; i<numbers.size(); i++){ 또한 배열을 반복하는 쉬운 (일반적으로 선호하는) 방법이 있습니다 for(int i=0; i<numberList.length; i++){

0

해야한다 :

for (Double number : numberlist) { 
    // your loop logic here 
} 

(I 게시 줄이 주석으로하지만 것 코드 서식을 잃어 버림).

관련 문제