在Java中考虑一个数字 - 家庭作业

时间:2013-10-22 01:26:14

标签: java

在本论坛上提到的其他几个问题,您将如何找到数字的因素。

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

我的代码现在正在运行,例如,数字6返回: 由1.0计算的6.0是6.000 6.0的因子是3.000 3.0中的因子3.0是2.000 6.0的因子是1.500 6.0的因子是1.200 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 个答案:

答案 0 :(得分: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,就像在Math类中一样。

15 = 2 * 7.5 + 0.你的商是:7.5
在编程7.5和7是不同的。一个是浮点号 另一个是我们称之为的整数整数

要存储浮点数,请使用 float double 数据类型。他们 保留小数点后的数字。
另一方面, int long 是整数,因此他们不保留 小数位后面的数字。他们不围绕他们;他们截断了它。

试试这个:

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

并打印出来。
 看到区别?

答案 1 :(得分:0)

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

答案 2 :(得分:0)

使用int并使用%

检查余数
int factor = 6;
int input = 1;

   while(input <= factor) {

       if(f % i == 0){

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

       }

   i++;

   }

答案 3 :(得分:0)

而是你使用double作为你的数字,最好更改为integer ..integer是单个数字,double是十进制数字..

int input;
    int factor = 1;
    int factorNum;

并从

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

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

答案 4 :(得分: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);
        }
    }