【问题标题】:Trying to display factors of integers, but having difficulties试图显示整数的因子,但有困难
【发布时间】:2012-12-30 23:07:34
【问题描述】:

我是编程新手,我不知道我哪里出了问题。

这是我的主要方法:

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。我哪里出错了?

【问题讨论】:

  • 你导入java.util.Scanner了吗? ?
  • while (!factor.hasMoreFactors()) 应该是while (factor.hasMoreFactors())
  • @Dangerosking 是的,他做到了,您可以在第一行代码import java.util.*; 上看到,这意味着将导入来自java.util 的所有需要​​的类
  • @Dangerosking 我做了 java.util.*,其中包括 Scanner。
  • @Walery Strauch 哦,是的,我没有意识到

标签: java class loops parameters constructor


【解决方案1】:

当你使用

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

你说虽然没有更多的因素,但将它们打印在屏幕上,但你需要 只要因子存在于列表中,就打印它们。

所以在 Java 中你将拥有:

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

【讨论】:

    【解决方案2】:
    while (!factor.hasMoreFactors())
    {
        System.out.print(factor.getNextFactor());
    }
    

    必须

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

    【讨论】:

      猜你喜欢
      • 2022-01-13
      • 1970-01-01
      • 1970-01-01
      • 2017-12-09
      • 2019-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多