2012-12-30 23 views
2

我是編程新手,我不確定我在哪裏出錯了。試圖顯示整數的因子,但有困難

這裏是我的主要方法:

import java.util.*; 
public class DisplayFactors 
{ 
    public static void main(String[] args) 
    { 
     Scanner scan = new Scanner(System.in); 
     System.out.print("Enter a integer: "); 
     String input1 = scan.nextLine(); 
     int input = Integer.parseInt(input1); 

     FactorGenerator factor = new FactorGenerator(input); 

     System.out.print(factor.getNextFactor()); 

     while (!factor.hasMoreFactors()) 
     { 
      System.out.print(factor.getNextFactor()); 
     } 
    } 
} 

這裏是我的類:

public class FactorGenerator { 

    private int num; 
    private int nextFactor; 

    public FactorGenerator(int n) 
    { 
     num = nextFactor = n; 
    } 

    public int getNextFactor() 
    { 
     int i = nextFactor - 1 ; 

     while ((num % i) != 0) 
     { 
      i--; 
     } 
     nextFactor = i; 
     return i; 
    } 

    public boolean hasMoreFactors() 
    { 
     if (nextFactor == 1) 
     { 
      return false; 
     } 
     else 
     { 
      return true; 
     } 
    } 
} 

目前,如果我輸入15作爲整數我只得到一個因素回來,這是5,但我需要它顯示所有因素:15,5,3和1.我哪裏錯了?

+0

沒有導入java.util.Scanner的; ? – Dangerosking

+4

'while(!factor.hasMoreFactors())'應該是'while(factor.hasMoreFactors())' –

+1

@Dangerosking是的,他做了,你可以在第一行代碼行看到'import java.util。*;'這意味着所有java.util'所需的類將被導入 –

回答

4

當您使用

while (!factor.hasMoreFactors()) 
      { 
       System.out.print(factor.getNextFactor()); 
      } 

你說,而沒有任何更多的因素,把它們打印屏幕上,但你需要 到只要它們存在於列表中就打印這些因子。

所以在Java中,你將有:

while (factor.hasMoreFactors()) 
       { 
        System.out.print(factor.getNextFactor()); 
       } 
1
while (!factor.hasMoreFactors()) 
{ 
    System.out.print(factor.getNextFactor()); 
} 

必須

while (factor.hasMoreFactors()) 
{ 
    System.out.print(factor.getNextFactor()); 
}