第1关:学习-Java循环for之求水仙花数
任务描述
本关任务:输出所有水仙花数。 水仙花数特征:
- 该值处于 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 one=i%10;
// 第三步:获取十位
int two=(i/10)%10;
// 第四步:获取百位
int three=i/100;
// 第五步:判断个位数的三次幂,十位数的三次幂,百位数的三次幂的和是否等于这个数本身,等于的话,输出该数
int sum=one*one*one+two*two*two+three*three*three;
if(sum==i){
System.out.println(i+"是一个水仙花数。");
continue;
}
}
/********** End **********/
}
}