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を入力すると、1つの因子(5)しか返されませんが、15、5、3、および1のすべての因子を表示するために必要です。どこが間違っているのでしょうか。

4

2 に答える 2

4

使用する場合

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

これ以上の要素はありませんが、画面に印刷すると言いますが、リストに存在する限り、要素を印刷する必要があります。

したがって、Javaでは次のようになります。

while (factor.hasMoreFactors())
                {
                    System.out.print(factor.getNextFactor());
                }
于 2012-12-30T23:19:07.057 に答える
1
while (!factor.hasMoreFactors())
{
    System.out.print(factor.getNextFactor());
}

でなければなりません

while (factor.hasMoreFactors())
{
    System.out.print(factor.getNextFactor());
}
于 2012-12-30T23:13:29.470 に答える