1.规律 无论是数学也好,编程也好,其本质上都是找规律,并且运用规律 for循环的规律是获取循环的次数或范围,以及获取循环的过程 while循环的规律是获取结束条件(可通过先循环后判断的思路,即刚开始可以先不写循环条件),以及获取循环的过程 而这些可以通过泛举来推导
2.例题 例题1(for):逢7过游戏,从任意一个位置报数,只要报的数字是包含7或者7的倍数时都要说:过 需求:使用程序在控制台打印出1-100之间的满足逢七必过的数据 思路: 判断使用哪个循环语句:有范围,使用for循环 开始值:1 结束值:100 过程1:判段1-100数字是否包含7,即判断个位数是否为7或百位数是否为7,即num%10==7||num/10%10==7 判断范围内是否是7的倍数,即num%7==0 过程2:逢7说过,即打印数字时,跳过该数字而打印"过",然后继续往下执行 main中代码如下:
for(int i=1;i<=100;i++){
if(i%7==0 || i%10==7 ||i/10%10==7){
System.out.println("过");
continue;
}
//注意:有continue不用再写else
System.out.println(i);
}
运行结果如下:(结果较长,只展示部分)
24
25
26
过
过
29
30
31
32
33
34
过
36
过
例题2:回文数:输入一个数字,正着读,倒着读都一样(请通过公式的方式解决) 思路: 判断使用哪个循环语句:范围:无,次数:无,使用while循环 公式:num取个位num%10==num%10,取十位(num/10^1)%10,取百位(num/10^2)%10...... 规律: 过程1:每次循环,需要多除一次10,再对整体取模 分析结束条件 泛举: 123 num 循环第一次: 个位:123%10==3 num%10 循环第二次: 十位:(123/10)%10==2 (num/10^1)%10 循环第三次: 百位:(123/10^2)%10==1 (num/10^2)%10 循环第四次: 千位:(123/10^3)%10==0 (num/10^3)%10 我们知道,123是没有千位的,此时123/10^3==0 即结束条件可分析为:原数值经过循环后不能为0 过程2:将获取到的值倒过来 例:123 倒过来的结果为321 即: 第一次 3*10 result=0,result=(result+3)*10 第二次 (3*10+2)*10 result=30,result=(30+2)*10 第三次 (3*10+2)*10+1 result=320,result=320+1=321 此时2/10=0 可得出结论: result=(result+取余结果)*10 循环进行,直至num/10=0为止,取消乘10,即进行if判断 代码如下:
public class Palindrome_number {
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
System.out.println("请输入一个回文数");
int num=scan.nextInt();
//原本的值经由循环后,一直发生变化,需要将原本的值赋给另一个值方便后期比较
int num1=num;
//记录每次num取余后的余数
int ge=0;
//记录结果
int result=0;
while (num!=0){
ge=num%10;
num=num/10;
if(num==0){
result=result+ge;
break;
}else{
result=(result+ge)*10;
}
}
System.out.println(result);
//将结果与原本值进行比较
if (num1==result){
System.out.println("是一个回文数");
}else {
System.out.println("不是一个回文数");
}
}
}
结果如下:
请输入一个回文数
134
431
不是一个回文数
1780

被折叠的 条评论
为什么被折叠?



