Java 检查数字是否为Armstrong数字 publicstaticvoidmain(字符串[]args){ System.out.print(“请输入一个数字:+”); 扫描仪扫描=新扫描仪(System.in); long number=scan.nextLong(); String num=String.valueOf(number);//获取数字位数的简单方法 长和=0; 对于(int i=0;i
当前,您正在对从Java 检查数字是否为Armstrong数字 publicstaticvoidmain(字符串[]args){ System.out.print(“请输入一个数字:+”); 扫描仪扫描=新扫描仪(System.in); long number=scan.nextLong(); String num=String.valueOf(number);//获取数字位数的简单方法 长和=0; 对于(int i=0;i,java,Java,当前,您正在对从num.charAt(i)返回的字符的ASCII码而不是数字本身应用Math#pow。要检索数字本身而不是ASCII表示,请 使用Character.getNumericValue(num.charAt(i))而不是num.charAt(i)另一种方法是查找字符和ascii值“0”之间的差异: public static void main(String[] args) { System.out.print("Please enter a number:"+" ");
num.charAt(i)
返回的字符的ASCII码而不是数字本身应用Math#pow
。要检索数字本身而不是ASCII表示,请
使用
Character.getNumericValue(num.charAt(i))
而不是num.charAt(i)
另一种方法是查找字符和ascii值“0”之间的差异:
public static void main(String[] args) {
System.out.print("Please enter a number:"+" ");
Scanner scan= new Scanner(System.in);
long number=scan.nextLong();
String num=String.valueOf(number); // simple way to get the number of digits in a number
long sum=0;
for(int i=0;i<num.length();i++)
{
sum+=Math.pow(num.charAt(i), num.length());
}
if(sum==number)
{
System.out.print(number+" "+"is an armstrong number");
}
else
{
System.out.print(number+" "+"is not an armstrong number");
}
}
对于(int i=0;i您可以执行以下操作:
for(int i=0;i<num.length();i++)
{
sum += Math.pow(num.charAt(i) - '0', num.length());
}
它的工作原理:
假设您有一个数字371
,它由3
个数字组成,因此当您通过调用此方法String.valueOf(number);
获取字符串值num
时,字符串num
的长度将为3
现在在for循环中,在每一轮中,它将在i
[num.charAt(i)
]指定的每个索引处读取每个数字作为char
后,计算每个数字的幂,然后将其作为String
[String.valueOf()
]读取,最后将其解析为Integer
[Integer.parseInt()
]
在每个循环结束时,计算将被添加到sum
变量中。@DawoodibnKareem我希望我的更新答案完成您的评论。肯定是一个改进。@YoussefAbdeen如果您对此代码有任何疑问,请不要犹豫,akhi:)@YoussefAbdeen非常欢迎您,如果它有助于您,请接受它:)
sum += Math.pow(Integer.parseInt(String.valueOf(num.charAt(i))), num.length());