# Java 程序：检查 Armstrong 数

> 原文： [https://beginnersbook.com/2017/09/java-program-to-check-armstrong-number/](https://beginnersbook.com/2017/09/java-program-to-check-armstrong-number/)

在这里，我们将编写一个 java 程序，检查给定的数字是否为 Armstrong 数。我们将看到同一程序的两个变体。在第一个程序中，我们将在程序本身中分配数字，在第二个程序中，用户将输入数字，程序将检查输入数字是否为 Armstrong。

在我们完成该计划之前，让我们看看什么是阿姆斯特朗数字。如果以下等式适用于该数字，则一个数字称为 Armstrong 数：

```java
xy..z = xn + yn+.....+ zn
```

其中`n`表示数字中的位数

例如，这是一个 3 位数的阿姆斯特朗数字

```java
370 = 33 + 73 + o3
         = 27 + 343 + 0
         = 370

```

让我们在一个程序中写这个：
要理解本程序，您应该具备以下 [Java 编程](https://beginnersbook.com/java-tutorial-for-beginners-with-examples/)主题的知识：

1.  [Java `while`循环](https://beginnersbook.com/2015/03/while-loop-in-java-with-examples/)
2.  [Java `if-else-if`](https://beginnersbook.com/2017/08/if-else-statement-in-java/)

## 示例 1：用于检查给定数字是否为 Armstrong 数的程序

```java
public class JavaExample {

    public static void main(String[] args) {

        int num = 370, number, temp, total = 0;

        number = num;
        while (number != 0)
        {
            temp = number % 10;
            total = total + temp*temp*temp;
            number /= 10;
        }

        if(total == num)
            System.out.println(num + " is an Armstrong number");
        else
            System.out.println(num + " is not an Armstrong number");
    }
}
```

输出：

```java
370 is an Armstrong number
```

在上面的程序中我们使用了`while`循环，但是你也可以使用`for`循环。要使用`for`循环，请使用以下代码替换程序的`while`循环部分：

```java
for( ;number!=0;number /= 10){
    temp = number % 10;
    total = total + temp*temp*temp;
}
```

## 示例 2：用于检查输入数字是否为 Armstrong 的程序

```java
import java.util.Scanner;
public class JavaExample {

    public static void main(String[] args) {

        int num, number, temp, total = 0;
        System.out.println("Ënter 3 Digit Number");
        Scanner scanner = new Scanner(System.in);
        num = scanner.nextInt();
        scanner.close();
        number = num;

        for( ;number!=0;number /= 10)
        {
            temp = number % 10;
            total = total + temp*temp*temp;
        }

        if(total == num)
            System.out.println(num + " is an Armstrong number");
        else
            System.out.println(num + " is not an Armstrong number");
    }
}
```

输出：

```java
Ënter 3 Digit Number
371
371 is an Armstrong number
```

查看相关程序：

1.  [Java 程序：检查素数](https://beginnersbook.com/2014/01/java-program-to-check-prime-number/)
2.  [Java 程序：检查闰年](https://beginnersbook.com/2017/09/java-program-to-check-leap-year/)
3.  [Java 程序：检查偶数或奇数](https://beginnersbook.com/2014/02/java-program-to-check-even-or-odd-number/)