自学Java第三天

3.1程序流程控制

顺序结构
程序从上到下逐行地执行,中间没有任何判断和跳转。
分支结构
根据条件,选择性地执行某段代码。
有if…else和switch两种分支语句。
循环结构
根据循环条件,重复性的执行某段代码。
有while、do.while、for三种循环语句。
注:JDK1.5之后提供了foreach循环,方便的遍历集合、数组元素。

顺序结构

Java中定义成员变量时采用合法的前向引用。如:
public class Test{
int num1=12;
int num2=num1+2;
错误形式:
public class Test{
int num2=num1+2;
int num1=12;

分支结构1:if-else语句

在这里插入图片描述
应用举例

public class TestAge{
	public static void main(String args[]){
		int age=75;
		if(age< 0){
			System.out.println("不可能!");
		}else if(age>250){
			System.out.println("是个妖怪!");
		}else{
			System.out.println("人家芳龄"+age+",马马乎乎啦!");
		}
	}
}	
//对下列代码,若有输出,指出输出结果。
int x=4;
int y=1;
if(x>2){
	if(y>2){
		System.out.println(x+y);
		System.out.println("atguigu");
	}
}else{
	System.out.printin("x is"+x);
}

分支结构2:switch语句

switch(变量){
case常量1:
	语句1;
	break;
case常量2:
	语句2;
	break;
... ...
case常量N:
	语句N;
	break;
default:
	语句;
	break;
}

代码举例

//如果是数字1,输出星期一,数字二输出星期二
int i = 1;
switch(i){
case 1:   //if(i == 1 )
	System.out.print1n("星期一");
	break;
case 2:   //else if(i == 2)
	System.out.print1n("星期二");
	break;
default:  //else
	System.out.print1n("不知道星期几");
	break;
}
public class Test{
	public static void main(String args[]){
		String season="summer";
		switch(season){
		case"spring":
			System.out.println("春暖花开");
			break;
		case"summer":
			System.out.println("夏日炎炎");
			break;
		case"autumn":
			System.out.println("秋高气爽");
			break;
		case"winter":
			System.out.println("冬雪皑皑");
			break;
		default:
			System.out.println("季节输入有误");
			break;
		}
	}
}

switch语句相关规则

  • switch(表达式)中表达式的返回值必须是下述几种类型之一:byte,short,char,int,枚举,String;
  • case子句中的值必须是常量,且所有case子句中的值应是不同的;
  • default子句是可任选的,当没有匹配的case时,执行default;
  • break语句用来在执行完一个case分支后使程序跳出switch语句块;如果没有break,程序会顺序执行到switch结尾。

例题

1.使用switch把小写类型的char型转为大写。只转换a,b,c,d,e.其它的输出"other"。

2.对学生成绩大于60分的,输出“合格”。低于60分的,输出“不合格”。

3.根据用于指定月份,打印该月份所属的季节。3,4,5春季6,7,8夏季9,10,11秋季12,1,2冬季

练习

//使用switch语句改写下列if语句:
int a=3;
int x=100;
if(a==1)
	x +=5;
else if(a==2)
	x +=10;
else if(a==3)
	x +=16;
else
	x +=34;
//解答
int a=3;
int x=100;
switch(a){
case 1:
	x +=5;
	break;
case 2:
	x +=10;
	break;
case 3:
	x +=16;
	break;
default:
	x +=34;
	break;
}

switch和if语句的对比

if和switch语句很像,具体什么场景下,应用哪个语句呢?

  • 如果判断的具体数值不多,而且符合byte、short、int、char这四种类型。虽然两个语句都可以使用,建议使用swtich语句。因为效率稍高。
  • 其他情况:对区间判断,对结果为boolean类型判断,使用if,if的使用范围更广。
  • 当你不知道应该使用if还是switch,都使用if就可以,主要使用if

循环结构

循环语句功能

  • 在某些条件满足的情况下,反复执行特定代码的功能

循环语句的四个组成部分

  • 初始化部分(init_statement)
  • 循环条件部分(test exp)
  • 循环体部分(body_statement)
  • 迭代部分(alter_statement)

循环语句分类

  • for循环
  • while循环
  • do/while循环

for循环语句

在这里插入图片描述
代码举例

public class Test{
	public static void main(String[] args){
		for(int i = 0;i < 5;i++){ //初始化表达式o;布尔值测试表达式o;更改表达式
			System.out.println("hello world");
		}
	}
}
public class Forloop{
	public static void main(String args[]){
		int result=0;
		for(int i=1;i<=100;i++){
			result +=i;
		}
	System.out.println("result="+result);
	}
}

for语句例题

  • 编写程序FooBizBaz.java,从1循环到150并在每行打印一个值,另外在每个3的倍数行上打印出“foo”,在每个5的倍数行上打印“biz”,在每个7的倍数行上打印输出“baz”。
    1
    2
    3 foo
    4
    5 biz
    6 foo
    7 baz

    15 foo biz
    105 foo biz baz
for(int i=1;i<=150;i++){
	String str="";
	str +=i;
	if(i*3==o){
		str+="foo";
	}
	if(i%5==0){
		str+="biz";
	}
	if(i%7==0){
		str+="baz";
	}
	System. out. println(str);
}

for语句练习

  1. 打印~100之间所有奇数的和
  2. 打印1~100之间所有是7的倍数的整数的个数及总和(体会设置计数器的思想)
  3. 输出所有的水仙花数,所谓水仙花数是指一个3位数,其各个位上数字立方和等于其本身。
    例如:153=1* 1* 1+3* 3* 3+5* 5* 5
//第三题
for(int i=100;i<=999;i++){
	//145,145/100=1,(145-1*100)/10=4,145-1*100-4-10=5
	int m=i/100;//得到百位数
	int n=(i-m*l00)/10;//得到十位数
	int k=i-m*100-n*10;//得到各位数字
	int res=m*m*m+ n*n*n+k*k*k;//各个位上数字立方和
	if (res ==1){ //判断是不是水仙花数
		System.out.println(i);
	}
}

while循环语句

语法格式

[初始化语句]
while(布尔值测试表达式){
	语句或语句块;
	[更改语句;]
}

应用举例

public class Whileloop{
	public static void main(String args[]){
		int result=0;
		int i=1;
		while(i<=100){
			result+=i;
			i++;
		}
			System.out.println("result="+result);
	} 
}

do-while循环语句

语法格式

[初始化语句]
do{
	语句或语句块;
	[更改语句;]
}while(布尔值测试表达式);

应用举例

public class WhileLoop{
	public static void main(String args[]){
		int result=0,i=1;
			do{
				result+=i;
				i++;
				}while(i<=100);
		System.out.println("result="+ result);
	}
}

循环语句练习

求1到100之间所有偶数的和。用for和while语句分别完成

int res =0;
for(int i=1;i<101;i++){
	if(i*2==0){
		res +=i;
	}
}
System.out.println(res);//要在tox循环之外输出最后的结果,因为只有全部循环技术完毕才有1到100之间所有偶数的和
int res0=0; 
int k=1; 
while(k<=100){
	if(k%2==0){
		res0 +=k;
	}
	k++;
}
System. out. println(res0);

嵌套循环

  • 将一个循环放在另一个循环体内,就形成了嵌套循环。其中,for,while,do…while均可以作为外层循环和内层循环。
  • 实质上,嵌套循环就是把内层循环当成外层循环的循环体。当只有内层循环的循环条件为false时,才会完全跳出内层循环,才可结束外层的当次循环,开始下一次的循环。
  • 设外层循环次数为m次,内层为n次,则内层循环体实际上需要执行m*n=mn次。

在这里插入图片描述

在这里插入图片描述
九九乘法表
在这里插入图片描述
输出1到100之间的所有质数
在这里插入图片描述

特殊流程控制语句

在这里插入图片描述
举例
在这里插入图片描述
break终止当前所在的循环
在这里插入图片描述
举例
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
特殊流程控制语句说明
在这里插入图片描述

数组

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

一位数组初始化

在这里插入图片描述

数组元素的引用

在这里插入图片描述

数组元素对的默认初始化

在这里插入图片描述
使用动态初始化的时候,数组的元素会有默认值,数字类型的默认值是o,对象的默认类型是null

多维数组

在这里插入图片描述
维数组中每一个元素都是一个数组,这样数组就是二维数组
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
例题:
在这里插入图片描述
在这里插入图片描述
或者
在这里插入图片描述
练习
在这里插入图片描述

数组中涉及的常见算法

在这里插入图片描述
求最大值
在这里插入图片描述
求总和,平均数
在这里插入图片描述
复制
在这里插入图片描述
反转
在这里插入图片描述
在这里插入图片描述
冒泡排序
在这里插入图片描述
数组操作常见问题
在这里插入图片描述
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值