目录
1.感受循环作用
平时我们说的循环就是重复去做某件事,比如围着操作跑1圈,2圈,3圈,....一直到100圈,那这就是一个重复的过程。那代码中的重复怎么一回事呢?看下面代码
public class Test01_Xunhuan{
public static void main(String[] args){
//重复代码块
System.out.println("HelloWorld");
System.out.println("HelloWorld");
System.out.println("HelloWorld");
System.out.println("HelloWorld");
System.out.println("HelloWorld");
}
}
缺点:代码不够简洁,重复度很高
循环作用:简化代码编写。
2.while循环
案例:计算1+2+3+4+5+....100的和?
2.1while语句语法结构
while:当...的时候
while(布尔表达式){
循环体
}
循环体:重复的代码块
2.2执行流程
先判断布尔表达式是否成立,
如果成立 就执行循环体, 再判断是否成立;
如果不成立,就执行循环下面的其他语句
2.3代码实现
public class Test02_While{
public static void main(String[] args){
//计算1+2+3+4+5+....100的和?5050 累加
int a=1;//条件初始化
int sum=0;
/*
sum+=a;
a++;*/
while(a<6){
sum+=a;
a++;
}
System.out.println(sum);
/*
1)2+4+6+8+.....+1000
2)5+10+15+....+100
3)99+97+95+....+3+1
4)1*3*5...*100
*/
}
}
2.4分析循环的四要素
条件初始化 int a=1; 作用:给变量赋初始值
条件判断 a<6 作用:循环体要不要执行
循环体
迭代器 a++; 作用:来控制循环次数
2.5循环的本质
代码变得简洁,
代码的效率提高了嘛?---》并没有提高,只是提高了程序员编写代码的效率
2.6练习
统计1~100之间被3整除的数,一行输出6个数
public class Test03_While{
public static void main(String[] args){
//统计1~100之间被3整除的数,一行输出6个数
/*1.输出1~100
2.被3整除条件num%3==0
3.换行输出
3 6 9 12 15 18
21 24 27 30 33 36
...
*/
int num=1;
int count=0;
while(num<101){
if(count%6==0&& count>0){
//换行
System.out.println();
}
if(num%3==0){
System.out.print(num+"\t");
count++;
}
num++;
}
}
}
3.do-while语句
3.1语法结构
do做
do{
循环体;
}while(布尔表达式);
3.2执行流程
上来就做,做完再判断
3.3案例
public class Test04_DoWhile{
public static void main(String[] args){
//计算1+2+3+4+5+....100的和?5050 累加
int a=1;//条件初始化
int sum=0;
/*
while(a<101){
sum+=a;
a++;
}*/
do{
sum+=a;
a++;
}while(a<101);
System.out.println(sum+"=="+a);
}
}
3.4分析循环的四要素
条件初始化 int a=1; 作用:给变量赋初始值
条件判断 a<6 作用:循环体要不要执行
循环体
迭代器 a++; 作用:来控制循环次数
3.5while和do-while区别
import java.util.Scanner;
public class Test05_DoWhile{
public static void main(String[] args){
//学习---》考试 --->根据分数判断要不要继续学习、
Scanner sc=new Scanner(System.in);
int score;
System.out.println("学习");
System.out.println("考试");
System.out.print("请输入一个分数:");
while(score<60){
System.out.println("学习");
System.out.println("考试");
System.out.print("请输入一个分数:");
score=sc.nextInt();//获取分数
}
/*
do{
System.out.println("学习");
System.out.println("考试");
System.out.print("请输入一个分数:");
score=sc.nextInt();//获取分数
}while(score<60);*/
}
}
4.for循环
4.1语法结构
for(条件初始化1;条件判断2;迭代器3){
循环体4
}
4.2执行流程
1--》2—》4---》3---》2--》4---》3————》2.....
4.3案例
1+2+3+4...100和
for循环的变形
public class Test06_For{
public static void main(String[] args){
//1+2+3+4...100和
int sum=0;
/*
for(int i=1;i<101;i++){
sum+=i;
}
int i;
for(i=0;i<101;i++){//i的作用域
sum+=i;
}
int i=0;
for(;i<101;i++){//i的作用域
sum+=i;
}
//当条件判断不写的时候,默认为true,会造成死循环
int i=0;
for(;;i++){
sum+=i;
System.out.println("循环体");
}
int i=0;
for(;;){
i+=1;
sum+=i;
System.out.println(i);
}
*/
}
}
4.4for和while的区别
1)for知道循环的次数---》常见的
2)while不知道循环的次数
5.break和continue关键字
/*
break:中断,跳出for循环
continue:继续,结束本次循环继续下一次循环
*/
public class Test08_continue{
public static void main(String[] args){
for(i=1;i<=100;i++){
if(i%7==0){
System.out.println("被7整除的数:"+num);
continue;
}
System.out.println(num+"==for循环结束了");
}
System.out.println("程序结束了");
}
}
/*
break:中断,跳出for循环
*/
public class Test09_break{
public static void main(String[] args){
//1)判断一个数是不是素数
/*素数的判断条件:只能被自己整除的数叫素数
9
num%2==0;
num%3==0;-----
num%4==0:
*/
int num=89;
int i;
boolean b=true;//是素数
for(i=2;i<num/2;i++){
if(num%i==0){
b=false;//能除数除尽,所以不是素数
break;
}
System.out.println(num+"==for循环结束了");
}
if(b){
System.out.println(num+"是素数");
}else{
System.out.println(num+"不是素数");
}
System.out.println("程序结束了");
}
}
6.双重for循环
6.1打印菱形
将菱形分为上下两部分,上部分 * 的数量是1、3、5、7、9以此类推," "的数量是4、3、2、1;下半部分 * 的数量是7、5、3、1," "的数量是1、2、3、4,以此为突破口寻找规律。利用两个for语句将菱形分为上下两部分,然后在for语句中嵌套两个for语句一个控制 * 的数量,一个控制" " 的数量;
public class Test07_For{
public static void main(String[] args){
//控制菱形的行数(必须为奇数)
int row = 9;
for (int i = 1; i <= row / 2 + 1; i++) {//控制上半部分的行数
for (int j = 1; j <= row / 2 + 1 - i; j++) {//控制" "的数量
System.out.print(" ");
}
for (int k = 1; k <= 2 * i - 1; k++) {//控制" "的数量
System.out.print("*");
}
//进行换行
System.out.println();
}
for (int i = row / 2; i >= 1; i--) {//控制下半部分的行数
for (int j = 1; j <= row / 2 + 1 - i; j++) {//控制" "的数量
System.out.print(" ");
}
for (int k = 1; k <= 2 * i - 1; k++) {//控制" "的数量
System.out.print("*");
}
System.out.println();
}
}
}
7.作业
1)求任意两个数范围之内的奇数和 \打印1~100之内的素数
2)求两个数a和b的最大公约数和最小公倍数。
3)使用变量控制循环次数,输入任意多个正整数,输入-1结束,找最大数
输入:
45
123
789
156
-1
输出:
789
4)打印九九乘法表
* 1*1=1
* 1*2=2 2*2=4
* 1*3=3 2*3=6 3*3=9
* 1*4=4 2*4=8 3*4=12 4*4=16
5)输入两个数n和a, 如n==4, a==3, 求3 + 33 + 333 + 3333的和
6)限制用户登录,提示用户输入用户名和密码,
如果用户名和密码不是"admin"和"123"的话,就提示用户继续输入,
最多输入五次。
7)换零钱,把一元钱换成5毛,2毛,1毛, 有多少种换法,打印