2011-02-01 3 views
0

모든 요소를 ​​배열 목록으로 반환하는 메서드를 만들어야합니다. 내가 지금 당분간 붙어있어 도움이 될 것입니다.모든 요소를 ​​출력 할 Java 배열 목록

/** 
* Determines whether the number has factors. 
* 
* @return true iff the number has a factor 
*/ 
public boolean hasMoreFactors() 
{ 
    if (number >= 2) { 
     return true; 
    } else { 
     return false; 
    } 
    // return (number >= 2); 
} 

/** 
* Is number divisible by a given other number? 
* 
* @param otherNumber the number we test whether it divides the object's number 
* @return true iff the number is divisible by otherNumber 
*/ 
public boolean isDivisible(int otherNumber) 
{ 
    if (number % otherNumber == 0) { 
     return true; 
    } else { 
     return false; 
    } 
} 

/** 
* Determine next factor. 
* pre-condition: call only if hasMoreFactors 
* returns true 
* 
* @return a factor of the object's number 
*/ 
public int nextFactor() 
{ 
    int triedFactor = 2; 
    while (! isDivisible(triedFactor)) { 
     triedFactor = triedFactor+1; 

    } 
    number = number/triedFactor; 
    return triedFactor; 
} 

/** 
* Print all factors of the generator's number on standard output. 
*/ 
public void printAllFactors() 
{ 
    System.out.println("Factors of " + number); 
    while (hasMoreFactors()) { 
     System.out.println(nextFactor()); 
    } 
    System.out.println("That's it."); 
} 

/** 
* Main method: Read an integer and print all its factors. 
*/ 
public static void main(String[] args) 
{ 
    System.out.print("Please enter a number greater or equal 2: "); 
    Scanner sc = new Scanner(System.in); 
    int num = sc.nextInt(); 
    System.out.println(); 
    FactorGenerator gen = new FactorGenerator(num); 
    gen.printAllFactors(); 
} 

}

+0

조금 더 자세히 설명해주세요. 어떻게 붙어 있니? : D – Skurmedel

+0

첫 번째로, 'return BooleanExpression;'을 if로 래핑하는 대신에. – unholysampler

+0

[ "숙제 태그, 다른 소위 '메타'태그와 마찬가지로 이제는 권장하지 않습니다.]] (http://meta.stackexchange.com/q/10812) – Will

답변

1

대신이 줄을 밖으로 인쇄의 :

List<Integer> list = new ArrayList<Integer>(); 

를 그 안에 보관 :

System.out.println(nextFactor()); 

는 ArrayList에를 만들

list.add(nextFactor()); 
,
+0

목록을 반환하는 것이 좋습니다. 단지 각 요소를 sysout하십시오. 그러나 영업 이익의 주요 관심사는 올바른 결과를 얻고 있다고 생각합니다. – Ray

+0

여기 업데이트 된 코드가 있습니다. 수업에 추가하는 걸 잊었습니다 – robert

+0

@ 레이 OP의 질문은 Arraylist를 돌려 보내는 것에 관한 것입니다. OP는 알고리즘 자체에 대한 어떠한 언급도하지 않습니다. – dogbane

0

숫자가 같은 요소를 여러 번 사용하는 경우를 놓친 것처럼 보입니다. 예를 들어 4 = 2 * 2이지만 2를 시도한 후에는 증가하고 3을 시도하십시오. 더 이상 요소가 될 때까지 각 후보자를 계속 시험해야합니다.