文章目录
- 前言
- 基础案例
- 1.求1+2+3+...+100的和
- 2.求1+3+5+...+99的和
- 3.求1到999之间所有的素数,并且五个一组进行输出
- 4.通过键盘输入一个整数,然后输出他的后n-1位部分
- 总结
前言
循环结构应用广泛,这里整理了不同难度的小案例供自己复习,小伙伴们也可以看看。
这里已经开始用到了封装,其实就是把每个能实现不同功能的代码封装成方法,使用时只需要在主函数中调用方法即可,后面也会具体介绍传参的内容。
基础案例
1.求1+2+3+…+100的和
public static void addSum1 () {
int a=1,res1=0;
while(a<=100){
res1+=a;
a++;
}
System.out.println("res1 = " + res1);
}
首先看到累加的需求,就要想到用循环去做这个重复的过程。
这里用到的是while循环,这种形式的while循环可以理解成for循环的一种变形,如下所示:
int res1=0;
for(int a=1;a<=100;a++){
res1+=a;
}
经过变形:
int a=1,res1=0;
for(;a<=100;){
res1+=a;
a++;
}
2.求1+3+5+…+99的和
public static void addSum2 () {
int b = 1, res2 = 0;
do {
res2 += b;
b += 2;
} while (b <= 100 && b % 2 == 1);
System.out.println("res2 = " + res2);
}
这里的循环条件中用到了逻辑运算符与&&和算术运算符取余%,b%2==1就是b除以2余1,以此来表示奇数。
相应的,如果表示偶数就是 b % 2 == 0
3.求1到999之间所有的素数,并且五个一组进行输出
public static void isSuShu1(){
int n = 0;
for (int i = 1; i < 1000; i++) {
boolean tag = true;
for (int j = 2; j < i; j++) {
if (i % j == 0) {
tag = false;
break;
}
}
if (tag) {
System.out.print(i + " ");
n++;
if (n % 5 == 0) {
System.out.println();
}
}
}
}
1.这里有一个嵌套循环:外面的for循环作用是遍历1-999的每一个数字
2.里面的for循环与if是平行关系:for循环用于判断i是否是素数,if表示当其为素数时输出i;
3.再看五个一组输出的需求:又加上了一个选择结构,当n为5的倍数时换行。
4.通过键盘输入一个整数,然后输出他的后n-1位部分
这个案例我是自己先写,再看老师的思路,我觉得老师的方法更优,但是又想保留自己的想法,就把两个都发出来了~
先给出我的方法:
public static void getCalName1(){
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个整数:");
int i = scanner.nextInt();
int d = 10;
while (i / d != 0) {
d *= 10;
}
System.out.println("该数字的后n-1位数为:" + i % (d /10));
}
这个案例是要输出后n-1位数字,那首先需要知道该数字一共有几位数。
这里循环意思是让i去不断地除以10,直到i为零,当d=10时,i是一位数字;当d为100时,i是两位数字…以此类推;
最后只需要输出i % (d /10)用以保留后n-1位即可。
这样看来,我的代码确实感觉比较凌乱、不清晰
下面是老师的方法:
public static void getCalName2(){
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个数字:");
int num = scanner.nextInt();
int pos=num,n=0,d=1;
// 拆数法获取位数
while(num!=0){
num=num/10;
n++;
}
for (int i = 1; i < n; i++) {//比如获取到的是四位数,就是给他%10的3次方
d*=10;
}
int res=pos%d;
System.out.println("该数字的后n-1位数为:" + res);
}
老师的方法就非常清晰:
1.定义pos、n、d:pos用来保存num的值,因为后面会对num进行改变;n相当于一个计数器,表示num的位数,当num!=0时,每进行一次循环,n++;d是10的n-1次方;
2.用while循环去获取num的位数;
3.用for循环实现10的n-1次方;
4.最后:num的后n-1位就为res=pos%d
总结
还是那句话,代码能自己敲一遍、梳理一遍会有更加深刻的理解和印象哦~
1142

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



