执行 Armstrong 数字程序时出现问题
Issues while executing Armstrong number program
我正在尝试使用一种代码来确定输入的号码是否是 Armstrong。这是代码:
import java.util.*;
public class Arm {
int a, b, c;
void m1() {
Scanner obj = new Scanner(System.in);
System.out.println("Enter a number");
int number = obj.nextInt();
number = (100 * a) + (10 * b) + (1 * c);
if ((a * a * a) + (b * b * b) + (c * c * c) == number) {
System.out.println("number is armstrong");
} else {
System.out.println("number is not armstrong");
}
}
public static void main(String args[]) {
Arm obj = new Arm();
obj.m1();
}
}
这里 a、b 和 c 的值为零。但这不是正确的结果。假设我们输入一个数字 345
。那么a
、b
、c
应该分别是3、4、5。
请指导。
这不是您计算 a、b、c 的方式。
为了找到 a、b、c,我们重复除以 10
并得到余数 modulus
。
int digit = 0;
int sum = 0;
while(num > 0)
{
digit = num % 10;
sum += Math.pow(digit, 3);
num = num/10;
}
为什么要用/
和%
考虑 345
。
现在要获取最后一位可以做什么?
什么是模数 return?余数,所以如果我们执行 %10
我们得到最后一个数字。
345 % 10 = 5
现在我们要倒数第二个数字。
所以我们将这个数除以 10,得到商
345 / 10 = 34
现在,如果我们可以执行取模,我们将得到 4
等等......
100 * a + 10 * b + 1 * c 有什么作用?
如果我们有单独的数字,则用于获取数字。
假设我们有 3、4、5,我们知道我们可以从中得到 345
,但是我们该怎么做呢?
3 * 100 = 300
4 * 10 = 40
5 * 1 = 5
-----------
300 + 40 + 5 = 345
现在完成你的整个程序。
public boolean isAmg(int num)
{
int digit = 0;
int sum = 0;
int copyNum = num; //used to check at the last
while(num > 0)
{
digit = num % 10;
sum += Math.pow(digit, 3);
num = num / 10;
}
return sum == copyNum;
}
我正在尝试使用一种代码来确定输入的号码是否是 Armstrong。这是代码:
import java.util.*;
public class Arm {
int a, b, c;
void m1() {
Scanner obj = new Scanner(System.in);
System.out.println("Enter a number");
int number = obj.nextInt();
number = (100 * a) + (10 * b) + (1 * c);
if ((a * a * a) + (b * b * b) + (c * c * c) == number) {
System.out.println("number is armstrong");
} else {
System.out.println("number is not armstrong");
}
}
public static void main(String args[]) {
Arm obj = new Arm();
obj.m1();
}
}
这里 a、b 和 c 的值为零。但这不是正确的结果。假设我们输入一个数字 345
。那么a
、b
、c
应该分别是3、4、5。
请指导。
这不是您计算 a、b、c 的方式。
为了找到 a、b、c,我们重复除以 10
并得到余数 modulus
。
int digit = 0;
int sum = 0;
while(num > 0)
{
digit = num % 10;
sum += Math.pow(digit, 3);
num = num/10;
}
为什么要用/
和%
考虑 345
。
现在要获取最后一位可以做什么?
什么是模数 return?余数,所以如果我们执行 %10
我们得到最后一个数字。
345 % 10 = 5
现在我们要倒数第二个数字。
所以我们将这个数除以 10,得到商
345 / 10 = 34
现在,如果我们可以执行取模,我们将得到 4
等等......
100 * a + 10 * b + 1 * c 有什么作用?
如果我们有单独的数字,则用于获取数字。
假设我们有 3、4、5,我们知道我们可以从中得到 345
,但是我们该怎么做呢?
3 * 100 = 300
4 * 10 = 40
5 * 1 = 5
-----------
300 + 40 + 5 = 345
现在完成你的整个程序。
public boolean isAmg(int num)
{
int digit = 0;
int sum = 0;
int copyNum = num; //used to check at the last
while(num > 0)
{
digit = num % 10;
sum += Math.pow(digit, 3);
num = num / 10;
}
return sum == copyNum;
}