任务描述
本关任务:输出所有水仙花数。 水仙花数特征:
- 该值处于 100(包括)到 999(包括)之间;
- 其个位数的三次幂,十位数的三次幂,百位数的三次幂的和等于这个数本身。
输出格式:xx是一个水仙花数。
相关知识
当我们想要对同样的操作执行多次,就需要使用到循环结构,在 Java 中循环结构主要分为三种:
- while 循环;
- do...while 循环;
- for 循环。
之前我们已经学习了前面两种循环,今天我们来学习最后一种最重要的循环结构 —— for 循环。
for 循环
虽然所有循环结构都可以用 while 或者 do...while 表示,但 Java 提供的 for 循环使一些循环结构变得更加简单。
以下图 1 为它的运行逻辑:
图1
从运行逻辑图中可以得出 for 循环执行步骤:
- 第一步执行表达式1,可初始化一个或多个循环控制变量;
- 第二步执行表达式2,若值为 true,则执行循环体语句,然后在执行第三步,若值为 false,则跳出循环体语句;
- 第三步执行表达式3,更新循环控制变量;
- 第四步再次执行条件表达式,也就是跳转到第二步,如此往复。
for 循环语法格式如下:
//三个表达式之间以;分隔。
for(表达式1; 表达式2; 表达式3) {
循环体语句序列;
}
for 循环使用案例:循环打印”好好学习,天天向上“ n 次。
public class ForTest {
public static void main(String[] args) {
// 创建Scanner对象
Scanner input = new Scanner(System.in);
// 获取输入的整数值
int n = input.nextInt();
for(int i=1;i<n;i++){
System.out.print("好好学习 天天向上");
}
}
}
按照 for 循环的执行步骤,以上案例的执行过程为:第一步定义一个整型变量 i,并赋值为 1,第二步判断变量 i 是否小于 n,小于的话执行循环体中的代码,打印一次”好好学习 天天向上“,第三步对变量 i 的值加 1,第四步重新判断变量 i 是否小于 n,重复第二步和第三步,直到变量 i 的值不小于 n,退出循环。
当 n 等于 5 时,输出结果如下:
好好学习 天天向上
好好学习 天天向上
好好学习 天天向上
好好学习 天天向上
好好学习 天天向上
自减运算符 --
在以上案例中,我们使用 for 循环结合自增运算符 ++ 循环输出语句,下面我们来了解一下,怎么使用 for 循环结合自减运算符 -- 来实现同样的功能。
public class ForTest {
public static void main(String[] args) {
// 创建Scanner对象
Scanner input = new Scanner(System.in);
// 获取输入的整数值
int n = input.nextInt();
for(int i=10;i>n;i--){
System.out.print("好好学习 天天向上");
}
}
}
当 n 等于 5 时,输出结果如下:
好好学习 天天向上
好好学习 天天向上
好好学习 天天向上
好好学习 天天向上
好好学习 天天向上
自减运算符 -- 可以置于变量后(i--),也可以置于变量前(--i),置于变量后表示先使用 i,再对 i 的值减 1,置于变量前表示先对 i 的值减 1,然后再使用 i。它的原理和我们之前学的自增运算符(++)是一样的。
/*
* 任务:使用for循环输出所有的水仙花数
*水仙花数特征:
- 该值处于 100(包括)到 999(包括)之间;
- 其个位数的三次幂,十位数的三次幂,百位数的三次幂的和等于这个数本身。
* 输出样式:x是一个水仙花数。
*/
public class ForTest {
public static void main(String[] args) {
// 请在 Begin-End 间编写代码
/********** Begin **********/
// 第一步:使用for循环依次取999到100中的每个数,判断是否为水仙花数
for(int i = 999;i >= 100;i--){
// 第二步:获取个位
int a = i%10;
// 第三步:获取十位
int b = i/10%10;
// 第四步:获取百位
int c = i/100;
// 第五步:判断个位数的三次幂,十位数的三次幂,百位数的三次幂的和是否等于这个数本身,等于的话,输出该数
int s = a*a*a + b*b*b + c*c*c;
if(s == i){
System.out.println(i + "是一个水仙花数。");
}
/********** End **********/
}
}
}