# Java 程序：检查阿姆斯特朗数

> 原文： [https://www.programiz.com/java-programming/examples/armstrong-number](https://www.programiz.com/java-programming/examples/armstrong-number)

#### 在此程序中，您将学习检查给定的数字是否为阿姆斯特朗数。 您将通过在 Java 中使用`for`循环和`while`循环学习如何做到这一点。

一个正整数称为阿姆斯特朗数`n`，如果

```java
abcd... = an + bn + cn + dn + ...
```

对于 3 位的阿姆斯特朗数，每个数字的立方数之和等于数字本身。 例如：

```java
153 = 1*1*1 + 5*5*5 + 3*3*3  // 153 is an Armstrong number.

```

## 示例 1：检查 3 位数字的阿姆斯特朗数

```java
public class Armstrong {

    public static void main(String[] args) {

        int number = 371, originalNumber, remainder, result = 0;

        originalNumber = number;

        while (originalNumber != 0)
        {
            remainder = originalNumber % 10;
            result += Math.pow(remainder, 3);
            originalNumber /= 10;
        }

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

运行该程序时，输出为：

```java
371 is an Armstrong number.
```

*   首先，给定数字（`number`）的值存储在另一个整数变量`originalNumber`中。 这是因为，我们需要在最后比较最终编号和原始编号的值。
*   然后，使用`while`循环循环遍历`originalNumber`，直到等于 0。
    *   在每次迭代中，`number`的最后一位存储在`remainder`中。
    *   然后，使用`Math.pow()`函数将`remainder`加 3（数字位数），并加到`result`上。
    *   然后，除以 10 后，从`originalNumber`中删除最后一位数字。
*   最后，比较`result`和`number`。 如果相等，则为阿姆斯特朗数。 如果不是，则不是。

* * *

## 示例 2：检查 n 位数字的阿姆斯特朗数 

```java
public class Armstrong {

    public static void main(String[] args) {

        int number = 1634, originalNumber, remainder, result = 0, n = 0;

        originalNumber = number;

        for (;originalNumber != 0; originalNumber /= 10, ++n);

        originalNumber = number;

        for (;originalNumber != 0; originalNumber /= 10)
        {
            remainder = originalNumber % 10;
            result += Math.pow(remainder, n);
        }

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

运行该程序时，输出为：

```java
1634 is an Armstrong number.
```

在此程序中，我们没有使用`while`循环，而是使用了两个`for`循环。

第一个`for`循环用于计算数字中的位数。 它是以下形式的压缩形式：

```java
for (;originalNumber != 0; originalNumber /= 10) {
     n++;
}
```

然后，第二个`for`循环计算`result`，其中在每次迭代中，余数由数字`n`来供电。

访问此页面了解如何[显示两个时间间隔](/java-programming/examples/armstrong-number-interval "Display all armstrong numbers between two intervals")之间的所有阿姆斯特朗数。