一:选择结构(一)
1.类型
if 可以处理单一或组合条件的情况 | |
---|---|
if-else 可以处理简单的条件分支情况 | |
多重if 可以处理连续区间的条件分支情况 | |
if嵌套 可以处理复杂的条件分支情况 |
2.语法
if结构
if-else结构
if(条件){ if(条件){
//代码块 //代码块
} }else{
//代码块
}
多重if 嵌套if
if(条件1){ if(条件1){
//代码块1 if(条件2){
}else if(条件2){ //代码块1
//代码块2 }else{
}else{ //代码块2
//代码块3 }else{
} //代码块3
}
3.或、与、非
作用:可使用在复杂条件下的if选择结构
如:
public class Do{
public static void main(String[] aa){
int score1=100;
int score2=72;
if((score1>98&&score2>80)||(score1==100&&score2>70)){
System.out.println("不错!!")
}
}
}
二:选择结构(二)
1. switch选择结构
A.语法
switch(表达式){
case 常量1: (小括号中可以是int、 short 、byte 、 char 、 枚举类
//代码块; 型 、String类型表达式)
break;
case 常量2: (常量的值必须各不相同)
//代码块;
break; (break可以省略,但break省略后将执行所有case
defaul: 后面的代码)
//代码块;
break;
}
如:
public class S5 {
public static void main(String[] args) {
System.out.println("请输入数字:");
int num =1;
switch (num) {
case 1:
System.out.println("爸爸的手机号码");
case 2 :
System.out.println("妈妈的手机号码");
default:
System.out.println("按键错误");
}
}
break省略后它的输出结果为:
爸爸的手机号码
妈妈的手机号码
按键错误
B. switch与if之间的区别
switch:它只执行等值条件判断
if: 它可以执行等值条件判断,也可以执行区间条件判断
三:循环结构
1.类型
while、 do-while、 for
2.语法
1. while(条件){ 2. do{ 3. for(初始化部分;条件;迭代){
//循环体 //循环体 //循环体
} }while(条件); }
3.区别
A. 执行顺序不同
do-while 先进行循环体,再进行条件判断 | |
---|---|
while 先进行条件判断,再进行循环体 | |
for 先进行初始化部分,再进行条件判断,然后执行循环体 |
B. 适应情况不同
循环次数确定 通常用while循环结构和do-while循环结构. | |
---|---|
循环次数不确定 通常用for循环结构 |
4. 在循环中遇到break与continue的区别
break:跳出本层循环,执行循环下面的语句
continue:跳出本次循环,进入下一次循环
四:数组
1.数组是什么
数组就是一个变量,将相同数据类型的数据存储在内存中。
2.数组的组成元素
a. 标识符(也即数组名,数组名可以是任意合法的变量名,而一个数组中只有一个标识符)
b.数组元素(也即数据)
c.数组下标(即数据编号,每个数据都有一个相应的下标,但下标是从0开始的)
d.元素类型(即数据类型,在一个数组中,数组中的数据都是相同的数据类型)
3.数组的所有步骤
a. 声明数组
语法:数据类型[] 数组名;或者数据类型 数组名[] ;
如:int [] score;
b.给数组分配空间
语法:数组名=new 数据类型[数组长度];(数组长度也就是数据的个数,它标志着一个数组中 如: score=new int[30]; 可以容纳的最大数量,若超过了这个长度, 则称为数组越界)
也可以在声明数组的同时将给它分配空间
语法:数据类型[] 数组名=new 数据类型[数组长度];
如:int [] score=new int[30];
c.赋值
语法:数组名[下标值];
如:score[0]=89;
也可以将声明数组、分配空间和赋值合并完成
语法:数据类型[] 数组名={值1,值2,值3,…,值n};
d.运用
import java.util.*;
public class B1 {
public static void main(String[] args) {
Scanner in= new Scanner(System.in);
String[] name=new String[5]; //声明数组名并给数据分配空间
System.out.println("请输入五位学员的名字:");
for(int i=0;i<name.length;i++) {
name[i]=in.next(); //给数据循环赋值
}
System.out.println("第一位名字:"+name[0]);
System.out.println("最后一位的名字:"+name[4]);
}
}
4.数组排序(默认为升序)
语法:Arrays . sort(数组名);
如:
import java.util.Arrays; //进行打包
import java.util.*;
public class B3 {
public static void main(String[] args) {
int[] score=new int[5]; //声明数组名并给数据分配空间
Scanner in=new Scanner(System.in);
System.out.println("请输入五位学员的成绩:");
for(int i=0;i<score.length;i++) {
score[i]=in.nextInt(); //给数据循环赋
}
Arrays.sort(score); //对score中的数据进行升序排序
System.out.println("学员成绩按升序排列:");
for(int i=0;i<score.length;i++) {
System.out.println(score[i]+""); //循环输出
}
}
5.求最大值
import java.util.*;
public class B4 {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int score[]=new int[5];
int max=0; //先声明最大值
max=score[0]; //将数组中的一个数据赋值给max
int i=0;
System.out.println("请输入五位学员的成绩:");
for(;i<score.length;i++) {
score[i]=in.nextInt(); //循环输入数据
if(score[i]>max) { //将数组中的数据和最大值循环进行比较
max=score[i]; //再将比较后得到的最大值赋值给max,即可
} //得到最大值
}
System.out.println("考试成绩最高分为"+max); //输出最大值
}
}
6.插入元素
import java.util.*;
public class B5 {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int list[]=new int[6]; //先声明长度为6的数组
list[0]=99;
list[1]=85:
list[2]=82; //进行赋值
list[3]=63;
list[4]=60;
int index=list.length; //保存新增成绩插入位置
System.out.println("请输入新增的成绩:");
int num=in.nextInt(); //输入新增数据
for(int i=0;i<list.length;i++) {
if(num>list[i]) { //将新增元素与数组中的元素进行比较
index=i; //找到新元素的插入位置
break;
}
}
for(int j=list.length-1;j>index;j--) {
list[j]=list[j-1]; //再把新增元素位置下标后面的元素进行后移
}
list[index]=num; //将新增元素保存到此下标的位置
System.out.println("插入成绩的下标是:"+index);
System.out.println("插入成绩的信息是:");
for(int k=0;k<list.length;k++) {
System.out.println(list[k]+"\t"); //循环输出数组中的数据
}
}
}
五:循环结构进阶
1.什么是二重循环结构
简单来说,二重循环结构就是一个循环体内又包含了另一个完整的循环结构
2.二重循环结构类型
语法:
while与while do-while与do-while
while(循环条件1){ do{
//循环操作1; //循环操作1;
while(循环条件2){ do{
//循环操作2; //循环操作2;
} }while(循环条件2);
} }while(循环条件1);
for与for while与for
for(循环条件1){ while(循环条件1){
//循环操作1; //循环操作1;
for(循环条件2){ for(循环条件2){
//循环操作2; //循环操作2;
} }
} }
循环条件1与 循环操作1称为外层循环,循环条件2与循环操作2称为内层循环,内层循环结束后,才执行外层循环的语句。在二重循环中,外层循环变化一次,内层循环变量要从初始值到结束值变化一遍。
3.如何使用二重循环结构
import java.util.*;
public class J1 {
public static void main(String[] args) {
int[] score=new int[4]; //创建score数组
int num=3; //循环次数
double sum=0.0;
double[] avg=new double[num]; //创建平均分数组
Scanner in=new Scanner(System.in);
for (int i = 0; i < num; i++) { //外层循环控制班级的数量
sum=0.0;
System.out.println("请输入第"+(i+1)+"个班级的成绩:");
for (int j = 0; j < score.length; j++) {
//内层循环控制每个班的参赛人数
System.out.println("第"+(j+1)+"个学员的成绩:");
score[j]=in.nextInt();
sum=sum+score[j]; //成绩累加
}
avg[i]=sum/score.length; //计算平均分
System.out.println("第"+(i+1)+"个班级参赛学员的平均 分:"+avg[i]+"\n");
}
}
}
4.二重循环中continue和break语句
当continue和break语句用于内层循环时,只会影响内层循环的执行,对外层循环没有影响。