在Java中分解一个数 - 作业

5
如此论坛上的其他问题所问,您如何找到一个数字的因数。
注意:我试图理解其他人已经写过的答案,请不要重复给出的答案。
我的代码现在可以工作,但是例如数字6返回: 6.0分解为1.0是6.000 6.0分解为2.0是3.000 6.0分解为3.0是2.000 6.0分解为4.0是1.500 6.0分解为5.0是1.200 6.0分解为6.0是1.000
有没有办法去掉所有小数? 我想到了一个“for”语句,但我不知道如何使用它们。
当前代码:
public class Factoring {

public static void main(String[] args) {
    double input;
    double factor = 1;
    double factorNum;

    System.out.println("This application calculates every factor of a given number!"
            + "\nPlease enter a number: ");
    input = TextIO.getlnDouble();

    System.out.println("Original Number: " + input);

    while (input >= factor){
        factorNum = input / factor;

        System.out.print("\n" + input + " factored by " + factor + " is ");
        System.out.printf("%.3f", factorNum);
        factor++;
    }
}

}
5个回答

6

double 的位置使用 int。当你使用 doublefloat 时,会得到小数。

因此,您可以这样:

    double input;
    double factor = 1;
    double factorNum;  

Should be:

    int input;
    int factor = 1;
    int factorNum;  

SSCCE

public class Factoring {
    public static void main(String[] args) {
        int number = 15;
        int factorNumber = 1;

        while(factorNumber <= number){
            if(number % factorNumber == 0){
                System.out.println(factorNumber + " is a factor of " + number);
            }
            factorNumber ++;
        }
    }
}  

结果:

1 is a factor of 15
3 is a factor of 15
5 is a factor of 15
15 is a factor of 15  

说明

考虑像在数学课堂上一样将数字15除以2。

15 = 2 * 7.5 + 0。商为:7.5
在编程中,7.5和7是不同的。其中一个是浮点数,而另一个是我们称之为整数整型整数

为了存储浮点数,使用floatdouble数据类型。它们保留小数点后的数字。
另一方面,intlong用于整数,因此它们不保留小数点后的数字。它们不会四舍五入;它们截断它。

试试这个:

double withDecimals = 7.5d;
int withoutDecimals = 7.5d;

并将它们打印出来。
看到区别了吗?


这个实现能否被修改,以便在number为偶数时不检查奇数?同样地,在数字为奇数时,不要检查偶数。这将确保最多检查number/4的值。 - Debosmit Ray

0

我将因子存储在ArrayList中

          int s = /* Your number or get from user */;
    ArrayList<Integer>integers = new ArrayList<>();
    for (int i = 1 ; i <= s ; i++){
        if(s%i == 0){
         integers.add(i);
           /* just for printing the factors */ System.out.println(i);
        }
    }

0
使用int类型并使用%检查余数。
int factor = 6;
int input = 1;

   while(input <= factor) {

       if(f % i == 0){

           System.out.println(i + " is a factor");

       }

   i++;

   }

0

如果你的数字是整数,最好使用整型而不是双精度型。整型适用于单个数字,而双精度型适用于小数。

int input;
    int factor = 1;
    int factorNum;

并更改自

System.out.printf("%.3f", factorNum);

System.out.printf("%.0f", factorNum);

0
如果输入的数字对因子取模不等于零,则将其从因子列表中删除。我在这里假设你所说的答案是像“1.5”这样的,它们在技术上不是输入数字的因子。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接