Java中的数字分解

Java中的数字分解,java,Java,正如本论坛上提出的其他几个问题一样,您将如何着手寻找数字的因素 注意:我试图理解其他人写的内容,请不要重复已经给出的答案 我的代码从现在开始工作,但是,例如,数字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 Fac

正如本论坛上提出的其他几个问题一样,您将如何着手寻找数字的因素

注意:我试图理解其他人写的内容,请不要重复已经给出的答案

我的代码从现在开始工作,但是,例如,数字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++;
    }
}

}

使用
int
代替
double
。当您使用
double
float
时,将得到小数

所以你的答案是:

    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是不同的。一个是浮点数 另一个是我们所说的整数或整数

要存储浮点数,可以使用浮点或双精度数据类型。他们 保留小数点后的数字。
另一方面,int和long表示整数,因此它们不保持 小数点后的数字。他们不把他们团团围住;他们截断了它

试试这个:

double withDecimals = 7.5d;
int withoutDecimals = 7.5d;
然后打印出来。

看到差异了吗?

如果输入的系数%不等于零,则将其从系数列表中删除。我在这里假设你说的是“1.5”这样的答案,从技术上讲,这些答案不是输入数字的因子。

使用int,并使用%

int factor = 6;
int input = 1;

   while(input <= factor) {

       if(f % i == 0){

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

       }

   i++;

   }
int因子=6;
int输入=1;

虽然(输入您使用double作为数字,但最好改为整数。。整数表示单个数字,double表示十进制数字

int input;
    int factor = 1;
    int factorNum;

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


我将这些因子存储在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);
        }
    }
int s=/*您的号码或从用户处获取*;
ArrayListIntegraters=新的ArrayList();

对于(int i=1;如果
数字
为偶数,则可以修改此实现以不检查奇数?同样,如果数字为奇数,则不检查偶数。这将确保最多检查
数字/4
值。
          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);
        }
    }