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++;
    }
}

}
4

5 回答 5

6

使用int代替double。当您使用doublefloat获得小数时。

所以你的这个:

    double input;
    double factor = 1;
    double factorNum;  

应该:

    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 是不同的。一个是浮点数,另一个是我们称之为整数整数。

为了存储浮点数,使用浮点精度数据类型。它们保留小数点后的数字。另一方面,
intlong用于整数,因此它们不会保留小数点后的数字。他们不会把他们围起来;他们截断它。

尝试这个:

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

并打印它们。
看到不同 ?

于 2013-10-22T01:28:50.230 回答
0

如果因子的输入数字 % 不等于 0,则将其从因子列表中删除。我在这里假设您正在谈论诸如“1.5”之类的答案,这些答案在技术上不是输入数字的因素。

于 2013-10-22T01:29:25.087 回答
0

使用 int 并使用 % 检查余数

int factor = 6;
int input = 1;

   while(input <= factor) {

       if(f % i == 0){

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

       }

   i++;

   }
于 2013-10-22T01:32:20.390 回答
0

相反,您使用 double 作为您的数字,最好将其更改为 integer..integer 用于单个数字,double 用于十进制数字..

int input;
    int factor = 1;
    int factorNum;

并从

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

System.out.printf("%.0f", factorNum);
于 2013-10-22T01:34:16.017 回答
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);
        }
    }
于 2017-11-15T12:23:29.147 回答