零基础学java第四天循环结构

今天的内容

1.三目运算符
2.循环结构

1.三目运算符

开发中用的很多
语法格式:
数据类型 x = (表达式) ? value1 : value2;
执行流程: 来判断表达式 你如果表达式为true 就将value1赋值给x这个变量, 如果为false 就将value2赋值给变量x
public class Demo1 {
	public static void main(String[] args) {
		int a = 30;
		int c;
		//int c = a > 31 ? 20 : 21;
		//执行流程:  判断a > 31 的值  如果 是true 将 20赋值给c     如果是false 将21 赋值给c
		//System.out.println(c);
		//三目运算符和if-else  类似
		
		if (a > 31) {
			c = 20;
		} else {
			c = 21;
		}
		System.out.println(c);
		
		
	}
}

2.循环结构

2.1为啥会有循环结构
如果代码中出现了大量的重复的代码或者有规律的代码的时候,可以使用循环结构出来
让代码变得简洁
1.代码看着红臃肿
2.阅读性差
3.可以维护低
循环可以解决以上所有的问题
循环是很有必要学习的
2.2while循环
语法格式:
while (布尔表达式) { 语句体 }
执行流程: 当代码执行到while关键字的时候,先去判断布尔表达式,如果布尔表达式为false,就不会执行
语句体。如果布尔表达式为true 执行语句体,然后(重要) 再去判断布尔表达式,如果布尔表达式为true
执行语句体,然后再去判断布尔表达式,直到布尔表达式为false的时候,循环就结束了(就不再执行语句体了)。接着执行循环以外的代码
public class Demo3 {
	public static void main(String[] args) {
		//打印4遍的中午吃烤羊排,使用while循环
		
		//无论任何循环  都要必须有三个条件:
			//1.初始化条件
			//2.循环条件
			//3.终止条件
		
		/**
		 * 分析代码,主要是分析执行的流程:
		 * i=0   0<4  true  执行大括号里面的代码  打印第一次的  中午吃烤羊排  i++
		 * i=1   1<4 true 执行大括号里面的代码  打印第二次的  中午吃烤羊排  i++
		 * i=2   2<4 true 执行大括号里面的代码  打印第三次的  中午吃烤羊排  i++
		 * i=3   3<4 true执行大括号里面的代码  打印第四次的  中午吃烤羊排  i++
		 * i=4  4<4 false  就不再执行大括号中的代码了!!!
		 */
		//1.声明一个变量
		int i = 0;//初始化条件
		while (i < 4) {// i <  4  终止条件   
			System.out.println("中午吃烤羊排");
			i++;//i++  是循环条件  自身加1
		}
		
		
	}
}

打印100遍的hellowolrd

public class Demo4 {
	public static void main(String[] args) {
		
		int i = 1;
		while (i <= 100) {
			System.out.println("第" + i + "遍hello wolrd");
			i++;
		}
		
		System.out.println("======");
		int i1 = 100;
		while (i1 > 0) {
			System.out.println("helloworld");
			i--;
		}
		
		//总结:   小数 -》大数   循环条件是++    大数-》小数   循环条件是--
		
		
	}
}	
循环可以做重复的事情,或者有规律的
打印1~5 1 2 3 4 5
public class Demo5 {
	public static void main(String[] args) {
		
		//打印1~5  while循环
		
		//打印的结果很巧妙的借助于了i这个变量
		/**
		 * 执行流程:
		 * i=1 1<6  true 执行大括号中的代码   sout(1)  i++
		 * i=2  2<6 true 执行大括号中的代码   sout(2) i++
		 * i=3 3<6  true执行大括号中的代码   sout(3) i++
		 * i=4 4<6 true  执行大括号中的代码   sout(4) i++
		 * i=5 5<6 true 执行大括号中的代码   sout(5) i++
		 * i=6 6<6 false  不执行大括号中的代码 循环结束
		 */
		int i = 1;
		while (i < 6) {
			System.out.println(i);
			i++;
		}
		
		
	}
}
打印1~10的奇数 1 3 5 7 9
public class Demo6 {
	public static void main(String[] args) {
		//打印10以内的奇数
		
		/**
		 * i = 1  1<11 true  执行if语句 1%2 !=0 true  执行if后面的大括号的代码 sout(1) i++
		 * i=2    2<11 true 执行if语句 2%2 !=0 false  if后面的大括号就不再执行了 i++
		 * i= 3   3<11 true  执行if语句 3%2 !=0 true 执行if后面的大括号的代码 sout(3) i++
		 * i=4  4<11   true执行if语句 3%2 !=0  false  if后面的大括号就不再执行了 i++
		 * i=5  
		 * 
		 * 循环了10遍
		 */
		int i = 1;
		while (i < 11) {
			//while循环可以嵌套if语句
			if (i % 2 != 0) {
				System.out.println(i);
			}
			i++;
		}
		
		System.out.println("============");
		
		/**
		 * a = 1  1<11 true   sout(1) a = a+2  a=3
		 * a= 3  3 <11 true sout(3) a=a+2  a=3+2
		 * a=5  5<11  true sout(5)  a=a+2   a=5+ 2
		 * a=7 ...
		 */
		int a = 1;
		while (a < 11) {
			System.out.println(a);
			//a = a + 2;
			a += 2;//步幅
		}
	}
}
打印1~100之内的偶数
public class Demo7 {
	public static void main(String[] args) {
		//打印100以内的偶数
		
		int i = 0;
		while (i <= 100) {
			if (i % 2 == 0) {
				System.out.println(i);
			}
			i++;
		}
		
		System.out.println("==========");
		int a = 0;
		while (a < 101) {
			System.out.println(a);
			a += 2;
		}
	}
}
2.3do-while循环【几乎不用】
语法格式:
do { 语句体 } while(布尔表达式);
执行流程:首先代码执行到do 然后执行do后面大括号中的语句体,再去判断while后面的布尔表达式
如果布尔表达式为false的话,就不再执行do后面的语句体了,相当于循环结束
如果布尔表达式为true,再回到do 去执行后面的语句体,执行完语句体之后,再判断while后面的布尔表达式,如果布尔表达式为true的话,就再执行do后面的语句体,然后再去判断while布尔表达式,直到为false的时候,循环结束了
public class Demo8 {
	public static void main(String[] args) {
		//打印 3遍的 一枝红杏出墙来
		
		/**
		 * i=0  打印第一遍的一枝红杏出墙来  i++ i=1   while后面的布尔表达式  1 <3 true
		 * 	      打印第二遍的一枝红杏出墙来 i++  i=2   while后面的布尔表达式 2< 3 true
		 *     打印第三遍的一枝红杏出墙来 i++  i=3   while后面的布尔表达式3 <3 false  循环结束
		 * 
		 */
		int i = 0;
		do {
			System.out.println("一枝红杏出墙来");
			i++;
		} while (i < 3);
		
		//do-while循环 和while循环的不同之处?
		//while 先判断 再执行     do-while 先执行再判断
	}
}

回顾上午的内容

1.三目运算符
  数据类型  x = 布尔表达式 ?   值1 :  值2;
  执行流程:    判断 布尔表达式  如果为true  将值1赋值给x. 如果为false 就会将值2赋值给x
2.循环结构
	做重复的事情或者有规律的事情
	一个循环必须有三个条件:  1.初始条件   2.循环条件    3.终止条件
	while循环
	while(布尔表达式) {
		语句体
	}
	
	
	do-while循环
	do {
		语句体
	} while (布尔表达式);
2.4for循环【重点】
语法格式:
for (表达式1; 布尔表达式2; 表达式3) { 语句体 }
表达式1: 初始化的条件
表达式2: 终止条件
表达式3: 循环条件
执行流程: 首先执行表达式1,再执行表达式2,如果布尔表达式2为true,执行大括号中语句体。然后再执行表达式3,再执行表达式2,再次判断布尔表达式2,直到为false,就不执行语句体。就意味着循环结束
public class Demo9 {
	public static void main(String[] args) {
		//打印3遍今天好热,但是我穿了棉袄
		
		/**
		 * i = 0   0 <3  true  执行大括号中的语句体  打印第一遍的今天好热,但是我穿了棉袄  i++
		 * i = 1   1<3  true 执行大括号中的语句体  打印第二遍的今天好热,但是我穿了棉袄 i++
		 * i=2 2<3   true执行大括号中的语句体  打印第三遍的今天好热,但是我穿了棉袄 i++
		 * i=3 3<3  false  大括号中的代码不再执行 循环结束了
		 */
		for (int i = 0; i < 3; i++) {
			System.out.println("今天好热,但是我穿了棉袄");
		}
		
	}
}	
打印10以内的奇数
public class Demo10 {
	public static void main(String[] args) {
		//打印10以内的奇数
		
		/**
		 * i=1 1<11 执行大括号中的if语句  i%2!=0  true  执行if语句大括号中的代码 sout(1) i++
		 * i=2 2<11 执行大括号中的if语句  i%2!=0 false  不再执行if语句后面的大括号中的代码了  i++
		 * i=3 3<11 ...
		 */
		//循环和if的嵌套
		for (int i = 1; i < 11; i++) {
			if (i % 2 != 0)  {
				System.out.println(i);
			}
		}
		
		System.out.println("=======");
		for (int i = 1; i < 11; i+=2) {
			System.out.println(i);
		}
	}
}
求1~100的和
public class Demo11 {
	public static void main(String[] args) {
		//求1~100的和
		/**
		 * sum是一个变量
		 *  第一次sum = 0     
		 *  第二次sum = sum(第一次的) + 1
		 *  第三次sum = 0 + 1 + 2
		 *  第四次sum = 0+ 1 + 2  + 3
		 * ...
		 * sum = sum + i
		 */
		
		/**
		 * sum = 0; i=0  0<101 true sum= sum + i=>sum=0+0  i++
		 * i=1  1<101  true sum =sum + i  =>sum = 0 + 1  i++
		 * i=2  2<101 true sum = sum + i =>sum=0+1 + 2  i++
		 * i=3  3<101  true sum=sum+i=>sum= 0+1 + 2 + 3 i++
		 * ...
		 * i=100 100<101 true sum=sum+i=>sum =0 + 1+2+...+ 99  + 100 i++
		 * i=101 101<101 false  大括号不再执行, 代码还要继续往下走。
		 * 执行 sout(sum)
		 * 
		 */
		int sum = 0;
		for (int i = 0; i < 101; i++) {
			sum = sum + i;
			
		}
		System.out.println(sum);
	}
}
1~100以内 逢7过
1 2 3 4 5 6 过 8 9 10 11 12 13 过 15 16 过...
分析:
得用for循环 从1开始 一直到100 得把这些数过一遍的
但是 是7的倍数 或者带7 的
i 这个值 就是要处理的数
7的倍数 i % 7 ==0 true 是7的倍数
个位带7 i % 10 == 7 true 是个位带7De
十位带7 i / 10 == 7 true 是十位带7
public class Demo12 {
	public static void main(String[] args) {
		//逢7打印过
		/**
		 * i=1 1<101 true if  sout(1) i++
		 * i=2 2<101 true if sout(2) i++
		 * ..,.
		 * i=7  7<101 true if sout("过")i++
		 */
		for (int i = 1; i < 101; i++) {
			if (i % 7 == 0 || i % 10 == 7 || i / 10 == 7) {
				System.out.println("过");
			} else {
				System.out.println(i);
			}
		}
	}
}
2.4嵌套循环【重点难点】
前提是循环
一个循环里面套另外一个循环。秉承着一个特点: 从外层循环先进入到内层循环,然后 内存循环先结束
然后再回到外层循环,再进入到内层循环,内层循环结束,再会带外层循环
案例1
**** **** ****
****
****
****


public class Demo13 {
	public static void main(String[] args) {
//		System.out.println("****");
//		System.out.println("****");
//		System.out.println("****");
//		for (int i = 0; i < 4; i++) {
//			System.out.print("*");
//		}
//		for (int i = 0; i < 3; i++) {
//			//****   
//			System.out.println("****");
//		}
		/**
		 * i = 0  0< 3 true  执行大括号中的内层的for循环
		 * 		j=0  0<4 true 	打印1个*  j++
		 * 		j=1  1<4  true  打印1个*  j++
		 * 		j=2 2<4 true    打印1个*  j++
		 * 		j=3  3<4  true  打印1个*  j++
		 * 		j=4  4<4 false 内层for循环结束 立马换行    i++  
		 * i = 1  1<3   true  再次执行大括号中的内层的for循环
		 * 		j=0 0< 4 true  打印1个* j++
		 * 		j=1  1<4  true  打印1个* j++
		 * 		j=2  2<4  true 打印1个* j++
		 * 		j=3  3<4  true  打印1个* j++
		 * 		j=4 4<4 false    内层循环结束  立马换行  i++
		 * i=2 2<3   true  再次执行大括号中的内层的for循环
		 * 		j=0   0< 4  打印1个* j++
		 * 		...
		 * 		j=3  3<4  true  打印1个*  j++
		 * 		j=4  4<4 false    内层循环结束  立马换行 i++
		 * i=3 3<3 false  整体循环就结束了
		 */
		for (int i = 0; i < 3; i++) {
			for (int j = 0; j < 4; j++) {//打印的是4个*
				System.out.print("*");
				
			}
			System.out.println();//换行
		}
		//总结:   最外层for循环 控制的是   行      最内层控制的 是 列
	}
}

找规律

案例2:

* 第一行 1个* (2 * 行数) -1 *** 第二行 3个* ***** 第三行 5个* ******* 第四行 7个* 外层的for循环 int i = 1 i < 5 i++ 那个* 有规律 int j = 1 ;j <= (2 * i) -1; j++
*
***
*****
*******
public class Demo14 {
	public static void main(String[] args) {
		//打印直角三角形
		
		/**
		 * i = 1  1<5 true 执行大括号内的内层的for循环
		 * 		j=1 1<=1  true 打印1个*  j++
		 * 		j=2 2<=1 false 立马换行   i++
		 * i = 2  2<5  true 执行大括号内的内层的for循环
		 * 		j=1 1<= 3  true  打印*  j++
		 * 		j=2 2<= 3 true   打印一个* j++
		 * 		j=3 3<=3  true   打印一个* j++
		 * 		j=4 4<=3 false 内层循环结束  换行 i++
		 * i= 3 3<5  true 执行大括号内的内层的for循环
		 * 		j=1  1<=5 true  打印一个* j++
		 * 		...
		 * 		j=4  4<=5 true  打印一个* j++
		 * 		j=5  5<=5 true  打印一个* j++		
		 * 		j=6  6<=5  false  内层循环结束  换行 i++
		 * i= 4 4<5  true 执行大括号内的内层的for循环
		 * 		j=1 1<=7  true  打印一个*  j++
		 * 		...
		 * 		j=7 7<=7 true 打印一个*   j+=
		 * 		j=8 8<= 7false  内层循环结束  换行 i++
		 * i=5 5<5  false 整体循环结束
		 * 		
		 */
		for (int i = 1; i < 5; i++) {
			for (int j = 1; j <= (2 * i) - 1; j++) {
				System.out.print("*");
			}
			System.out.println();//换行
		}
	}
}
案例九九乘法表
1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 ... 找规律 几行 9行 第一行 1列 第二行 2列 .... 每行的列数和 每行息息相关的
public class Demo15 {
	public static void main(String[] args) {
		
		//打印九九乘法表
		//你们自己分析代码的执行的流程!!!
		for (int i = 1; i < 10; i++) {
			for (int j = 1; j <= i; j++) {
								//1*2=2
				System.out.print(j + "*" + i + "=" + i*j + "\t");
			}
			System.out.println();
		}
	}
}

作业:

1.
 *******
 *****
 ***
 *
2.
    *          第一行 由3个空格  1个*
   **          第二行  由 2个空格 2个*
  ***           第三行  由 1个空格  3个*
 ****           第四行  由 0个空格   4个*
 for (int i = 0; i < 4; i++) {
			//控制是空格
			for (int j = 0; j < args.length; j++) {
				
			}
			//控制是*
			for (int j = 0; j < args.length; j++) {
				
			}
		}
3.
   *         第一行  3个空格 1个*
  ***        第二行  2个空格 3 个*
 *****       第三行  1个空格  5个*
*******      第四行  0个空格  7个*

基础比较弱的!!! 一定要写一个倒三角!!! 前提你得把我讲的弄懂弄会!!!理解掌握的

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值