Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 执行Armstrong数字程序时出现的问题_Java_Numbers_Solution - Fatal编程技术网

Java 执行Armstrong数字程序时出现的问题

Java 执行Armstrong数字程序时出现的问题,java,numbers,solution,Java,Numbers,Solution,我正在尝试一种代码,以确定输入的数字是否为阿姆斯特朗。代码如下: 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

我正在尝试一种代码,以确定输入的数字是否为阿姆斯特朗。代码如下:

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
,然后用
模得到余数

int digit = 0;
int sum = 0;
while(num > 0)
{
 digit = num % 10;
 sum += Math.pow(digit, 3);
num = num/10;
}
为什么要使用
/
%

考虑一下
345

现在要获得最后一位数字,可以做什么

模数返回什么?余数,因此如果我们执行
%10
,我们将得到最后一个数字

345 % 10 = 5
现在我们要最后的第二个数字

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;
}

在哪里为
a
b
c
赋值?void m1(){Scanner obj=新扫描仪(System.in);System.out.println(“输入一个数字”);int number=obj.nextInt();c=(number%10);b=(number/10)%10);a=((number/10)/10));if((aaa)+(bbb)+(ccc)=number){System.out.println(“数字是阿姆斯特朗”)}else{System.out.println(“数字不是阿姆斯特朗”);}}公共静态void main(字符串args[]){Arm obj=new Arm();obj.m1();}@VIvek如果我给一个1234怎么办?超过3位数的数字?void m(){Scanner obj=new Scanner(System.in);System.out.println(“输入数字”);int number=obj.nextInt();int sum=0;int lop=number;int digit=0;while(number>0){digit=number%10;sum=(int)(sum+Math.pow(digit,3));number=number/10;}if(sum==lop){System.out.println(“数字是阿姆斯特朗”);else{System.out.println(“数字不是阿姆斯特朗”);}我收到了你的代码。谢谢。但是你能告诉我当我上一个代码中的这一行被执行时会发生什么吗;数字=(100*a)+(10*b)+(1*c);这里,无论我们插入了什么数字,a、b和c的值都是零。因为你从来没有从这个数字中分配过a、b、c。