流程控制之循环结构
什么是循环
概念:通过某个条件控制,使代码重复有规律的执行
循环结构的分类
while循环
语法:
循环变量的初始化;
while(循环条件的判断){
循环体语句;
循环变量的改变;
}
循环体执行的次数: 0--n
死循环形式:
while(true){
}
注意:
while(false){} 这样写是错误的
但是布尔表达式的值可以为false 不能直接写成false
案例:用while循环实现跑圈过程
public class Demo{
public static void main(String[] args) {
// 从第一圈开始跑 循环变量的初始化
int i = 1;
//在跑道上跑圈
while (i<=10) {
System.out.println("这是我跑的第 "+i+"圈");
i++;//在心里加 1
}
System.out.println("我跑完了");
}
}
案例:计算 1+2+...+100 的和
public class Demo{
public static void main(String[] args) {
//定义一个变量用于存放每次累加的和
int sum = 0;
int i = 1;
while (i<=100) {
//循环体 将每次循环变量的值进行累加
sum = sum + i;//
i++;
}
//输出累加完的结果
System.out.println("结果是:"+sum);
}
}
练习: 计算 1--100之间 所有偶数的和
第一种:
public class Demo{
public static void main(String[] args) {
int sum = 0;//累加器
int i = 1;//循环变量的初始化
while (i<=100) {
//如果i为偶数就进行累加
if (i%2==0) {
sum = sum+i;//sum+=i
}
i++;
}
//打印输出结果
System.out.println("结果是:"+sum);
}
}
第二种:
public class Demo{
public static void main(String[] args) {
int sum = 0;
int i = 2;
while (i<=100){
sum+=i;
i+=2;
}
System.out.println("结果是:"+sum);
}
}
do…while循环
语法:
循环变量的初始化;
do{
循环体;
循环变量的改变;
}while(循环条件的判断);
循环体执行的次数是:1--n
死循环的形式:
do{
}while(true);
注意:do while循环的布尔表达式可以直接写为false
do{
}while(false);
案例:用do while循环实现跑圈过程
public class Demo{
public static void main(String[] args) {
//定义循环变量 初始化
int i = 1;
do {
System.out.println("这是我跑的第 "+i+"圈");
i++;
} while (i<=10);
}
}
练习:用do while 循环计算 1-100 所有奇数的和
public class Demo{
public static void main(String[] args) {
int sum = 0;
int i = 1;
do {
sum+=i;
i+=2;
} while (i<100);
System.out.println("结果是:"+sum);
}
}
for循环
语法:
for(循环变量的初始化 ; 循环条件的判断 ; 循环变量的改变 ){
循环体语句;
}
循环体执行的次数是:0-n
死循环的形式:
for(;;){}
for( ;true; ){}
案例:用for循环 模拟跑圈的过程
public class Demo{
public static void main(String[] args) {
for( int i = 1;i<=10 ;i++ ){
System.out.println("这是我跑的第 "+i+"圈");
}
}
}
案例:计算100以内所有偶数的和
public class Demo{
public static void main(String[] args) {
int sum = 0;
for(int i = 2;i<=100;i+=2){
sum+=i;
}
System.out.println("结果是:"+sum);
}
}
练习:
打印100以内所有的奇数和
public class Demo{
public static void main(String[] args) {
int sum = 0;
for(int i = 1;i<=100;i+=2){
sum+=i;
}
System.out.println("结果是:"+sum);
}
}
for循环的循环条件的判断可以直接写为true 但是不能直接写为false
public class Demo{
public static void main(String[] args) {
for(int i = 1 ;true ;i++ ) {
System.out.println("hello world"+i);
}
}
}
当for循环的循环条件的判断省略不写时 默认为true
public class Demo{
public static void main(String[] args) {
for(int i = 1 ; ;i++ ) {
System.out.println("hello world"+i);
}
}
}
当for循环的所有条件都省略不写时 括号中的分号不能省略 这种形式就是for循环的死循环形式
public class Demo{
public static void main(String[] args) {
for( ; ; ) {
System.out.println("hello world"+i);
}
}
}
总结三种循环的应用场景
1.从功能上来说三种循环都可以实现同样的功能
2.while 和do while 一般用于未知循环次数的场景
3.for 循环一般用于已知循环次数的场景
4.do...while循环的循环次数和其他两个循环不一样是 1-n 不常用
循环控制语句
break:结束整个循环
案例:当该跑第五圈的时候 结束跑圈
public class Demo{
public static void main(String[] args) {
for(int i = 1;i<=10;i++) {
if(i==5){
break;
}
System.out.println("这是我跑的第"+i+"圈");
}
}
}
continue:跳过本次循环 直接进行下一次循环
案例:当该跑第五圈的时候 直接心里跳过了 直接跑第六圈
public class Demo{
public static void main(String[] args) {
for(int i = 1;i<=10;i++) {
// 如果该跑第5圈 直接跳过
if (i==5) {
continue;//跳过第五圈
}
System.out.println("这是我跑的第"+i+"圈");
}
}
}
循环的嵌套
案例需求:
在控制台上 输出以下的图形
****
****
****
代码:
public class Demo{
public static void main(String[] args) {
for(int i = 1;i<=3;i++) {
for(int j = 1;j<=4;j++) {
System.out.print("*");
}
System.out.println();
}
}
}
概念:在一个循环结构中的循环体又是一个循环结构
案例:
*
**
***
****
实现:
public class Demo{
public static void main(String[] args) {
for(int i = 1;i<=4;i++) {
for(int j = 1;j<=i;j++) {
System.out.print("*");
}
System.out.println();
}
}
}
案例:
i
* 1 3个空格 1*
** 2 2个空格 2*
*** 3 1个空格 3*
**** 4 0个空格 4*
代码:
public class Demo{
public static void main(String[] args) {
for(int i = 1;i<=4;i++) {
//空格
for(int j = 1;j<=4-i;j++) {
System.out.print(" ");
}
//*
for(int k = 1;k<=i;k++) {
System.out.print("*");
}
//换行
System.out.println();
}
}
}
案例:
********
* *
* *
********
代码:
public class Demo{
public static void main(String[] args) {
for(int i = 1;i<=4;i++) {
if (i==1||i==4) {
for(int j = 1;j<=8;j++) {
System.out.print("*");
}
System.out.println();
} else{
System.out.print("*");
for(int k = 1;k<=6;k++) {
System.out.print(" ");
}
System.out.print("*");
System.out.println();
}
}
}
}
案例:打印9*9乘法表
i j
1*1 = 1 1 循环1次
1*2 = 2 2*2 = 4 2 循环2次
1*3 = 3 2*3 = 6 3*3 = 9
j*i = j*i ---->j+"*"+i+"="+(j*i)
代码:
public class Demo{
public static void main(String[] args) {
for(int i = 1;i<=9;i++) {
for(int j = 1;j<=i;j++){
System.out.print(j+"*"+i+"="+(j*i)+"\t");
}
//换行、
System.out.println();
}
}
}
随机数
java的类库中有一个类 Math
random();
Math.random() 就是一个随机数 范围为 0-1 但是不包括1的一个小数
猜数字游戏
项目的需求
1.玩家只有十次机会猜数字/
2.系统随机产生一个100以内的整数/
3.如果猜中了 输出 恭喜中奖 奖品是 苍老师 游戏退出//
4.如果没有猜中 输出 你个菜鸡 你还有几次机会//
5.当机会用完 提示输出 请投币 重新开始//
6.当输入小数或者不在0-99之间 输出 你个傻叉 请看要求
需求分析
1.让系统随机产生一个整数
2.键盘接收我们输入一个数据
3.将这两个数进行比较
guess>=0&&guess<100
&&guess-(int )guess ==0
案例:
import java.util.*;
public class Demo{
public static void main(String[] args) {
//1
int sj = (int)(Math.random()*100);
System.out.println("答案是:"+sj);
//2键盘输入一个数
Scanner s = new Scanner(System.in);
for(int i = 1;i<=10;i++) {
System.out.println("请输入一个1-99之间的整数:");
double guess = s.nextDouble();//猜
//进行数据合法的判断
if (guess>=0&&guess<100&&guess-(int )guess ==0) {
//3 进行比较大小
if (guess==sj) {
System.out.println("猜对了 恭喜中奖 奖品是肤白貌美大长腿的美女一枚");
break;
}else{
System.out.println("你个菜鸡 猜错了 你还有"+(10-i)+"次机会");
}
if (i==10) {
System.out.println("请投币 重新开始");
}
} else {
System.out.println("你个脑子进水的人 请看需求");
}
}
}
}