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”的语句,但我真的不知道如何使用它们 当前代码: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
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);
}
}