水仙花数?(重要案例)
所谓的水仙花数是指一个三位数,其各位数字的立方和等于该数本身。
举例:153是一个水仙花数
1*1*1 + 5*5*5 + 3*3*3 = 1 + 125 + 27 = 153
分析:
A:三位数其实是告诉了我们范围,这个用for循环实现
B:获取每一个三位数的个位,十位,百位
如何获取一个三位数的个位,十位,百位呢?
举例:153
个位:153%10
十位:153/10%10
百位:153/10/10%10
...
C:拿个位,十位,百位的立方和和该数本身进行比较
如果相等,就说明该数是水仙花数,在控制台打印
public class ForTest4 {
public static void main(String[] args) {
//三位数其实是告诉了我们范围,这个用for循环实现
for(int x=100; x<1000; x++) {
int ge = x%10;
int shi = x/10%10;
int bai = x/10/10%10;
//拿个位,十位,百位的立方和和该数本身进行比较
if((ge*ge*ge+shi*shi*shi+bai*bai*bai) == x) {
//如果相等,就说明该数是水仙花数,在控制台打印
System.out.println(x);
}
}
}
}
需求:统计”水仙花数”共有多少个/(统计个数通用模式)
分析:
A:定义统计变量,初始化值是0
B:获取三位数,用for循环实现
C:获取每个位上的数据
D:判断数据是否是水仙花数
如果是,就统计变量++
E:输出统计变量
public class ForTest5 {
public static void main(String[] args) {
//定义统计变量,初始化值是0
int count = 0;
//获取三位数,用for循环实现
for(int x=100; x<1000; x++) {
//获取每个位上的数据
int ge = x%10;
int shi = x/10%10;
int bai = x/10/10%10;
//判断数据是否是水仙花数
if((ge*ge*ge+shi*shi*shi+bai*bai*bai) == x){
//如果是,就统计变量++
count++;
}
}
//输出统计变量
System.out.println("水仙花的个数是:"+count);
}
}
for循环语句的格式:
for(初始化语句;判断条件语句;控制条件语句) {
循环体语句
}
三种循环语句可以完成相同的事情,但是也是有小区别的:
do...while循环语句至少执行一次循环体。
而for和while循环语句要先进行条件的判断,然后看是否执行循环体语句。
for循环和while循环的小区别:
for循环结束后,初始化的变量不能被使用了。
而while循环结束后,初始化的变量还可以继续被使用。
推荐使用的顺序:
for -- while -- do...while
break和continue的区别:
continue:继续的意思
break:跳出整个循环
continue:跳出这一次的操作,进入下一次的执行
for(int x=1; x<=5; x++) {
if(x == 3) {
continue;
}
System.out.println("HelloWorld"+x);
}
三个数用if来比较大小(三个数):
int a=5;
int b=3;
int c=8;
int d;
if(a<b){
if(c<a){
d=c;
System.out.println(d+"是最小值");
}else{
d=a;
System.out.println(d+"是最小值");
}
}else{
if(c<b){
d=c;
System.out.println(d+"是最小值");
}else{
d=b;
System.out.println(d+"是最小值");
}
}
为了提高程序的灵活性,我们把数据改进为键盘录入。(键盘录入的具体步骤)
使用步骤:
A:导包
import java.util.Scanner;
注意:在一个类中,有这样的顺序关系
package > import > class
B:创建键盘录入对象
Scanner sc = new Scanner(System.in);
C:获取数据
int i = sc.nextInt();
Random:用于产生随机数的类。用法和Scanner类似。(取随机数)
使用步骤:
A:导包
import java.util.Random;
B:创建对象
Random r = new Random();
C:获取随机数
int number = r.nextInt(10);
获取的范围:[0,10) 包括0,不包括10
|
|