控制结构的分类:分支结构、循环结构
分支结构:if(条件1){
语句1;
}else if(条件2){
语句2;
}else{
语句3;
}
switch(条件){//jdk1.6,不支持字符串条件
case 值1:
...
break;
default:
....
}
循环:
for(初始化部分;循环条件;迭代部分){
循环体
}
1 break continue
break 结束当前循环,跳到当前循环后的第一条语句
continue 跳过本次循环,执行下一次循环
2 While 循环控制
[初始化部分]
while(循环条件){
循环体,包括迭代部分
}
练习:显示2...1000之间的质数
3 do ... while 循环控制
[初始化部 分]
do{
循环体,包括迭代部分
}while(布尔表达式);
4. 多分支流程控制语句 - switch语句
switch(整数表达式){ //byte,short,char,int
case 整数常量1:
//执行语句序列1
break; //结束当前switch语句块
case 整数常量2:
//执行语句序列2
break; //结束当前switch语句块
default:
//默认执行语句序列
}
练习:评价学生成绩
Scanner sc = new Scanner(System.in);
System.out.print("输入学生的成绩:");
// 优(100-90), 良(89-80), 中(79-70), 及格(69-60), 不及格(59以下)
int score = sc.nextInt();
String level="";
switch(score/10){
case 10:
case 9: level = "优"; break;
case 8: level = "良"; break;
case 7: level = "中等"; break;
case 6: level = "及格"; break;
default: level = "不及格"; break;
}
System.out.println(level);
5 数组
5.1 数组的声明:
int[] ary;
int ary[]; //不推荐的写法!
5.2 数组的初始化:
(1) 动态初始化: 必须指明数组的长度
int[] ary = new int[10];
int[] ary = new int[]{3,1,4,1,5,9};
(2) 静态初始化: 只能在声明数组时候使用!
int[] ary = {3,1,4,1,5,9};
//ary = {2,7,1,8};//编译错误
ary = new int[]{2,7,1,8};
(3) 数组成员自动初始化为"零"值.
"零"值: 0, 0.0, '\u0000', false
5.3 数组的访问
(1) 使用ary.length 属性可以获取数组的长度
(2) 数组的下标(index)从0开始, 最大是length-1,一共length个元素.
(3) 可以使用下标访问指定的元素:
int a = ary[2];//读取第3个元素
ary[2] = 8;//写入
(4) 如果越界访问会出现异常(错误)ArrayIndexOutOfBoundsException
练习:计算一个整数数组中的最大值
4 数组的扩展问题
(1) Java数组的大小是固定的
(2) 利用数组复制方法可以变通的实现数组扩展
System.arraycopy(src, srcPos, dest, destPos, length) 可以复制数组
(3) 新数组 = Arrays.copyOf(原数组, 新长度)以简便的创建数组副本
创建数组副本的同时将数组长度增加就变通的实现了 数组的扩展
作业:
案例1 : 统计一个字符在字符串中的所有位置.
字符串: "统计一个字符在字符串中的所有位置"
字符: '字'
返回: {4,7}
案例2 : 统计一个字符在字符数组中的所有位置.
字符数组: 统计一个字符在字符串中的所有位置
字符: '字'
返回: {4,7}
案例3: 字符串统计案例:
字符串: "123456789012"
将字符串的奇数位数字相加为 c1 = 1 + 3 + 5 + 7 + 9 + 1
将字符串的偶数位数字相加为 c2 = 2 + 4 + 6 + 8 + 0 + 2
案例4: (选做) 将一个整数数位翻转
如: 整数 56123
返回结果为整数: 32165
提示: 使用 %10 获取最后一位
使用 /10 去除处理完的最后一位
分支结构:if(条件1){
语句1;
}else if(条件2){
语句2;
}else{
语句3;
}
switch(条件){//jdk1.6,不支持字符串条件
case 值1:
...
break;
default:
....
}
循环:
for(初始化部分;循环条件;迭代部分){
循环体
}
1 break continue
break 结束当前循环,跳到当前循环后的第一条语句
continue 跳过本次循环,执行下一次循环
2 While 循环控制
[初始化部分]
while(循环条件){
循环体,包括迭代部分
}
练习:显示2...1000之间的质数
3 do ... while 循环控制
[初始化部 分]
do{
循环体,包括迭代部分
}while(布尔表达式);
4. 多分支流程控制语句 - switch语句
switch(整数表达式){ //byte,short,char,int
case 整数常量1:
//执行语句序列1
break; //结束当前switch语句块
case 整数常量2:
//执行语句序列2
break; //结束当前switch语句块
default:
//默认执行语句序列
}
练习:评价学生成绩
Scanner sc = new Scanner(System.in);
System.out.print("输入学生的成绩:");
// 优(100-90), 良(89-80), 中(79-70), 及格(69-60), 不及格(59以下)
int score = sc.nextInt();
String level="";
switch(score/10){
case 10:
case 9: level = "优"; break;
case 8: level = "良"; break;
case 7: level = "中等"; break;
case 6: level = "及格"; break;
default: level = "不及格"; break;
}
System.out.println(level);
5 数组
5.1 数组的声明:
int[] ary;
int ary[]; //不推荐的写法!
5.2 数组的初始化:
(1) 动态初始化: 必须指明数组的长度
int[] ary = new int[10];
int[] ary = new int[]{3,1,4,1,5,9};
(2) 静态初始化: 只能在声明数组时候使用!
int[] ary = {3,1,4,1,5,9};
//ary = {2,7,1,8};//编译错误
ary = new int[]{2,7,1,8};
(3) 数组成员自动初始化为"零"值.
"零"值: 0, 0.0, '\u0000', false
5.3 数组的访问
(1) 使用ary.length 属性可以获取数组的长度
(2) 数组的下标(index)从0开始, 最大是length-1,一共length个元素.
(3) 可以使用下标访问指定的元素:
int a = ary[2];//读取第3个元素
ary[2] = 8;//写入
(4) 如果越界访问会出现异常(错误)ArrayIndexOutOfBoundsException
练习:计算一个整数数组中的最大值
4 数组的扩展问题
(1) Java数组的大小是固定的
(2) 利用数组复制方法可以变通的实现数组扩展
System.arraycopy(src, srcPos, dest, destPos, length) 可以复制数组
(3) 新数组 = Arrays.copyOf(原数组, 新长度)以简便的创建数组副本
创建数组副本的同时将数组长度增加就变通的实现了 数组的扩展
作业:
案例1 : 统计一个字符在字符串中的所有位置.
字符串: "统计一个字符在字符串中的所有位置"
字符: '字'
返回: {4,7}
案例2 : 统计一个字符在字符数组中的所有位置.
字符数组: 统计一个字符在字符串中的所有位置
字符: '字'
返回: {4,7}
案例3: 字符串统计案例:
字符串: "123456789012"
将字符串的奇数位数字相加为 c1 = 1 + 3 + 5 + 7 + 9 + 1
将字符串的偶数位数字相加为 c2 = 2 + 4 + 6 + 8 + 0 + 2
案例4: (选做) 将一个整数数位翻转
如: 整数 56123
返回结果为整数: 32165
提示: 使用 %10 获取最后一位
使用 /10 去除处理完的最后一位