(04)Java学习笔记——程序流程控制(控制语句)

结构:
1.顺序结构
2.判断结构
3.选择结构
4.循环结构

————————————————
判断结构:if (必须要明确自己的控制范围{})

1. 第一种格式:
if(条件表达式)
{
    执行语句;
}

2.第二种格式:(某些情况下,三元运算符就是if...else的简化格式)
(简写格式什么时候用?当if...else运算后,有一个具体的结果时,可以简化写成三元运算符)

if(条件表达式)
{
    执行语句;
}
else     //否则,如果前面为true,则不执行else之后的。如果前面为false,则执行else后的。
{
    执行语句;
}

3.第三种格式(设置多条件判断):

if(条件表达式)
{
    执行语句;
}
else   if   (条件表达式)
{
    执行语句;
}
……
else
{
    执行语句;
}


_____________________________________________________________
局部代码块

{}花括号中的为 代码块。

变量只在{ }中起作用。

局部代码块可以定义局部变量的生命周期。
04Java学习笔记——程序流程控制(语句if <wbr>switch <wbr> <wbr>while <wbr> <wbr>do <wbr>while <wbr> <wbr> <wbr>for)


变量——1.必须要有初始化值,2.必须有自己所属的作用域

____________________________________________________________

switch 选择结构
switch中的表达式的值分别与case的值比对,选择一致的值的case下的执行语句,如果都不匹配,最后执行default下的执行语句。

格式:
switch(表达式)
{
    case 取值1:
          执行语句;
          break;
    case 取值2:
          执行语句;
          break;
..........
    default:
          执行语句;
          break;
}

04Java学习笔记——程序流程控制(语句if <wbr>switch <wbr> <wbr>while <wbr> <wbr>do <wbr>while <wbr> <wbr> <wbr>for)

switch的特点:
1/可选择数据有限: switch()     //byte     short     int     char (可支持符号数据)

04Java学习笔记——程序流程控制(语句if <wbr>switch <wbr> <wbr>while <wbr> <wbr>do <wbr>while <wbr> <wbr> <wbr>for)

2/switch备选答案是无序的。


switch语句的注意事项:

1/case后面值必须是常量表达式, 不能是变量表达式,多个case后面的值不能相同。
2/default不建议省略,因为它的作用是对不正确的情况给出提示。


————————————————————————————————————
if 和 switch 的特点和区别,及应用
if :
1.对具体的值进行判断;
2.对区间判断;
3.对运算结果是boolean类型的表达式进行判断。

switch:
1.对具体的之进行判断;
2.值的个数通常是固定的;
对于几个固定的值判断,建议使用switch语句,因为switch语句会将具体的答案加载进内存。

——————————————————————————————
循环结构
语句:while      do   while   ,   for

循环语句的四个组成:

1-初始化语句
2-判断条件语句
3-循环体语句
4-控制条件语句(在这部分一次循环体结束后,下一部分循环体执行前执行,通过控制循环条件中的变量,使循环在合适的时候结束。



1/while 循环语句

基本格式:

while( 条件表达式)       // 条件表达式:看的就是true  和 false
{
      执行语句;
}


扩展格式:

初始化语句;
while(判断条件语句)
{
      循环体语句;
      控制条件语句;
}


练习1:

/*
初始化语句;
while(判断条件语句)
{
      循环体语句;
      控制条件语句;
}

While 语句与For 循环语句可以等价转换

练习:输出10次helloworld

*/

class WhileDemo_01 
{
	public static void main(String[] args) 
	{
		for (int x=0;x<=10 ;x++ )	//for循环实现
		{
			System.out.println("Hello World");
		}
		
		System.out.println("_____________________");

		int y = 0;	//while循环实现

		while (y<=10)
		{
			System.out.println("Hello World");
			y = y+1;
		}
	}
}

练习2:
求出1-100之和

/*
练习:求出1-100之和
*/

class  WhileTest_01
{
	public static void main(String[] args) 
	{
		int sum = 0;	//初始化语句
		int x=1;

		while (x<=100)	//条件判断语句
		{
			sum =sum+x;	//循环体语句
			x =x+1;	//条件控制语句
		}

		System.out.println("1-100之和="+sum);
	}
}


练习3:
统计水仙花数有多少个

/*
统计水仙花数有多少个
*/

class  WhileTest_02
{
	public static void main(String[] args) 
	{
		int count = 0;
		int x =100;
		
		while (x<1000)
		{
			int ge =x%10;
			int shi = x/10%10;
			int bai = x/10/10%10;

			if ((ge*ge*ge+shi*shi*shi+bai*bai*bai)==x)
			{
				count =count +1;
			}
			x =x+1;

		}
		System.out.println("水仙花合计"+count+"个");
	}
}

练习4:

最高峰珠穆朗玛峰8848m.一张足够大的纸(厚度0.01m)折叠多少次能达到这个高度。

/*
最高峰珠穆朗玛峰8848m.一张足够大的纸(厚度0.01m)折叠多少次能达到这个高度。

分析:
1/定义一个计数变量count
2/最大值8848m
3/纸张厚度0.01m
4/每折叠一次的厚度是上一次的2倍

*/

class WhileTest_03 
{
	public static void main(String[] args) 
	{
		int count =0;
		int start = 1;
		int max = 884800;

		while (start<max)
		{
			count = count+1;
			start = start*2;
						
		}
		System.out.println("纸张折叠"+count+"次");
	}
}

结果:纸张折叠20次

_____________________________________

2/  do  while循环语句无论条件是否满足,循环体至少执行一次)(练习“累加思想”和“计数器思想”)

基本格式
do
{
      执行语句;
while(条件表达式);


扩展格式:

初始化语句;
do{

循环体语句;
控制条件语句;
}
while(判断条件语句);


练习01:
打印10次Hello World

class DoWhileTest_01 
{
	public static void main(String[] args) 
	{
		int x =1;

		do
		{
			System.out.println("Hello World");
			x++;
		}
		while (x<=10);
	}
}


练习02:
求1-100所有数的和

/*
求1-100所有数的和
*/
class  DoWhileTest_02
{
	public static void main(String[] args) 
	{
		int sum = 0;
		int x =1;

		do
		{
			sum=sum+x;
			x++;
		}
		while (x<=100);

		System.out.println("sum="+sum);
	}
}


——————————————————————————

3/  for 循环语句

格式:

  for(初始化表达式;判断条件语句;控制条件语句)
{
      执行语句;  //循环体
}

初始化表达式:定义变量
循环条件表达式:设置循环条件
循环后的操作表达式:设置变量变化控制计数

练习1:

class ForTest_03 
{
	public static void main(String[] args) 
	{
		//求1-100数相加的和
		int sum = 0;
		for (int x=1;x<=100 ;x++ )
		{
			sum = sum +x;
		}
		System.out.println("sum="+sum);
		System.out.println("___________________________");

		
		//求1-100偶数相加的和
		int sum1 = 0;
		for (int x=1;x<=100 ;x++ )
		{
			if (x%2 ==0)
			{
				sum1 = sum1+x;
			}
		}
		System.out.println("1_100偶数和="+sum1);
		System.out.println("___________________________");



		//求1-100奇数相加的和
		int sum2 = 0;
		for (int x=1;x<=100 ;x++ )
		{
			if (x%2 !=0)	//判断除2不为零的数为奇数
			{
				sum2 = sum2 +x;
			}
		}
		System.out.println("1_100奇数和="+sum2);
	}
}

练习2:

/*
求5的阶乘
n!=n*(n-1)!
n!=n*(n-1)*(n-2)*(n-3)*...*3*2*1

*/

class ForTest_04 
{
	public static void main(String[] args) 
	{
		int jc = 1;
		for (int x=1;x<=5 ;x++ )
		{
			jc = jc * x;
		}
		System.out.println("5的阶乘="+jc);
	}
}



练习3:
水仙花数
所谓水仙花数,是指一个 三位数,其 各位数字的立方和等于该数本身
例如:
153 = 1*1*1 +5*5*5 +3*3*3 =1 +125 +27 =153

步骤分析:

a/ 三位数告诉我们范围
b/通过for循环获取每一个三位数。关键是如何获取这个三位数的个,十,百位上的数据:——>通过取模法
假设一个数据是:153
个位:153 % 10 = 3
十位:153 /10 %10 =5
百位:153 /10 /10 %10 =1
.........
c/让个位*个位*个位+十位*十位*十位+百位*百位*百位 和该数据比较,如果相同,输出

代码:
class ForTest_05 
{
	public static void main(String[] args) 
	{
		for (int x=100;x<1000 ;x++ )	//限定三位数的范围
		{
			int ge = x%10;	//取出个位上的数
			int shi = x/10%10;	//取出十位上的数
			int bai = x/10/10%10;	//取出百位上的数

			if (x == (ge*ge*ge+shi*shi*shi+bai*bai*bai))	//判断各位数字的立方和是否等于该数本身
			{
				System.out.println(x);
			}
			
		}

	}
}


练习4:
输出满足如下条件的五位数:
个位等于万位
十位等于千位
个位+s十位+千位+万位=百位

/*
练习:
输出满足如下条件的五位数:
个位等于万位
十位等于千位
个位+s十位+千位+万位=百位

步骤分析:
1/用for循环限定并遍历五位数
2/分别取出各位数字
3/用if依据要求判断数字是否满足要求

*/

class ForTest_06 
{
	public static void main(String[] args) 
	{
		for (int x=10000;x<100000 ;x++ )
		{
			int ge   = x%10;
			int shi  = x/10%10;
			int bai  = x/10/10%10;
			int qian = x/10/10/10%10;
			int wan  = x/10/10/10/10%10;

			if ((ge==wan)&&(shi==qian)&&((ge+shi+qian+wan)==bai))
			{
				System.out.println(x);
			}
	
		}

	}
}


练习5: (统计思想)
统计水仙花数有多少个

/*
需求:统计水仙花数有多少个

步骤分析:
1/水仙花数限定在三位数
2/用for遍历三位数
3/分别取出各位数值,并用if判断是否符合水仙花条件
4/统计数值并输出(设置一个count变量)

*/

class  ForTest_07
{
	public static void main(String[] args) 
	{
		int count = 0; //设置一个count变量用于统计个数

		for (int x=100;x<1000 ;x++ )
		{
			int ge = x%10;
			int shi = x/10%10;
			int bai = x/10/10%10;
	
			if ((ge*ge*ge+shi*shi*shi+bai*bai*bai)==x)
			{
				count = count+1;	//如果满足条件则计入count
			}
	
		}
		System.out.println("水仙花个数="+count);
	}
}


练习6:
统计1——1000之间同时满足如下条件的数据有多少个
对3整除余2
对5整除余3
对7整除余2

/*
统计1——1000之间同时满足如下条件的数据有多少个
对3整除余2
对5整除余3
对7整除余2

步骤分析:
1/ 用for遍历1——1000的数
2/设置1个变量,用于将分别满足条件的数赋值
x%3==2
x%5==3
x%7==2

2/用if判断每个数是否满足三个条件
3/设置一个计数器count用来统计数字
4/输出统计数值

*/

class  ForTest_08
{
	public static void main(String[] args) 
	{
		int count = 0;

		for (int x=1;x<=1000 ;x++ )
		{
			if ((x%3==2) && (x%5==3) && (x%7==2))
			{
				count = count+1;
			}
		}
		System.out.println("满足条件的数共计="+count);

	}
}


————————————————————————————————————————————————

ForFor 循环嵌套

循环嵌套:就是循环语句的循环体本事是一个循环语句。

循环控制行数

循环控制列数


练习01:
输出一个4行5列的星星(*)图案

/*
输出一个4行5列的星星(*)图案
*****
*****
*****
*****

*/

class ForForTest_01 
{
	public static void main(String[] args) 
	{

		for (int y=0;y<=4 ;y++ )	//外部循环实现四次打印
		{
			for (int x=0;x<=5 ;x++ )	//内部循环负责打印一行五颗*
			{
				System.out.print("*");
			}
			System.out.println();	//每次打印一行后换行
		}

	}
}

练习02:
输出如下图形:
*
**
***
****
*****

/*
行数不需要变化,变化的是列数
列数变化规律:
第一行:1列  y=0,y<=0,y++
第二行:2列  y-0,y<=1,y++
第三行:3列  y=0,y<=2,y++
第四行:4列  y=0,y<=3,y++
第五行: 5列  y=0,y<=4,y++

y<=的数值,正好与外循环中的x相对应
*/

class ForForTest_02 
{
	public static void main(String[] args) 
	{

		for (int x=0;x<5 ;x++ )
		{
			for (int y=0;y<=x ;y++ )
			{
				System.out.print("*");
			}
			System.out.println();
		}

	}
}

练习03:
输出九九乘法表

/*
输出九九乘法表
*/

class ForForTest_03 
{
	public static void main(String[] args) 
	{
		for (int x=1;x<=9 ;x++ )	//为了使用数据将x=1
		{
			for (int y=1;y<=x ;y++ )
			{
				System.out.print(y+"*"+x+"="+y*x+"\t");	//九九乘法表的列开头数与y的变化相符,被乘数与X变化相符
			}
			System.out.println();
		}
	}
}


________________________________________________________
其他的流程控制语句

break(中断当前循环),     
1/ 跳出单层循环
2/ 跳出多层循环
要想实现跳出多层循环的效果,就必须使用带标签的语句。——>   标签名:语句

范例:

class BreakDemo_01 
{
	public static void main(String[] args) 
	{
		wc:for (int x=0;x<3 ;x++ )	//加入标签名wc
		{
			nc:for (int y=0;y<4 ;y++ )	//加入标签名nc
			{
				if (y==2)
				{
					break wc;	//break默认中断当前单层循环,通过指向标签名wc来结束多层循环
				}
				System.out.print("*");
			}
			System.out.println();
		}

	}
}



continue(继续)
放置在循环中,离开此场景无意义。

跳出一次循环,进入下一次的执行。(break是中断整个循环,不再执行)


return(返回)
作用不是结束循环的,是用来结束方法的。


——————————————————————————————————————————


反义字符
回车:\n
制表符:\t
退格:\b
按下回车键: \r
window系统中回车符其实是由两个符号组成: \r\n
linux中回车符是 \n

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值