//分支结构
//单分支
if(条件){代码}
例:
int a=1;
if(a>0)
System.out.println(a);
//双分支
if(条件){代码} else{代码}
例:
int a=1;
if(a>2)
System.out.println(a);
else
System.out.println("条件不成立");
//多分枝
if(条件1){代码1} else if(条件2){代码2}…else{代码N} //if做区间条件
例:
Scanner input = new Scanner(System.in);
int score = input.nextInt();
if(score>=90){
System.out.println("优秀");
}else if(score>=80){
System.out.println("良好");
}else if(score>=70){
System.out.println("中等");
}else if(score>=60){
System.out.println("合格");
}else{
System.out.println("不合格");
}
代码功能为输入成绩,判定成绩等级。
switch(算术表达式) {case 常量1:代码1;break;…default:代码N;} //switch做等值条件(贯穿现象,只支持long以下的整数(char,枚举),JDK1.8之后开始支持String)。
要注意的是每一个case代码后面都要接入break,否则会默认执行下一个case条件和代码。
例子
int a=1;
switch(a){
case 1:
a--;
case 2:
a--;
case 3:
a--;
default:
a--;
}
System.out.println(a);
此处不添加break,则输出为-4,a为1执行case 1,因没有break打断就将所有代码全部执行。
switch综合例子:
Scanner input = new Scanner(System.in);
int year,month,day=0;
year = input.nextInt();
month = input.nextInt(); //输入年月
boolean isLeapYear = (year%4==0 && year%100!=0) || year%400==0;//判断是否为闰年
System.out.println(year+(isLeapYear?"是":"否")+"闰年");
switch(month){
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
day = 31;
break;
case 4: case 6: case 9: case 11:
day = 30;
break;
case 2:
day = isLeapYear ? 29:28;
break;
} //判断输入月数有多少天
System.out.print(MessageFormat.format("{0}年{1}月有{2}天",year,month,day));
此程序通过输入的年月来判断当月有多少天最后再输出年月日。要注意程序要判断当年是否为闰年(年份能被4整除且不能被100整除 或者年份能被400整除),年份为闰年时2月有29天。
//嵌套分支
if(){
if(){}
switch(){}
}
//多个变量构成复杂条件,建议用嵌套分支,一层只负责一个变量构建的条件
例:
int a=9;
if(a%9==0){
a--;
if(a%2==0)
System.out.print(a);
}
//循环
//概念:重复性操作
//四要素:
//1、循环变量的声明和初始化
//2、循环条件
//3、循环体
//4、循环变量的更新
//使用循环解决问题
//1、是否存在重复性操作
//2、如果存在,确定四要素
//3、选择循环结构,套用其语法
//while 和 do…while 循环次数不确定的循环
// while 先判断后执行
// do…while 先执行后判断
//for 循环次数确定
//4、确认循环是否能够正常结束
//基础循环
while(条件){循环体}
int a=0;
while(a<4)
{
System.out.println(a);
a++;
}
//输出结果为0、1、2、3,共执行了四次
do{循环体}while(条件);
例:
int a=0;
do
{
a++;
System.out.println(a);
}while(a<0);
根据do while循环先执行再判断的特性此处会输出1,然后停止循环。
for(循环变量的声明和初始化;条件;循环变量的更新){循环体}
例:
for(int i=0;i<4;i++){
System.out.println(i);
}
//输出0,1,2,3。执行四次
//循环跳转语句
continue; 结束本次循环,进入下一次循环
break; 结束循环
continue例:
for(int i=0;i<4;i++){
if(i==1) continue;
System.out.println(i);
}
//输出结果为0,2,3当i等于1后执行continue,结束本次循环(跳过输出语句),进入下一次循环,下次循环里则执行输出2的操作。
break例:
for(int i=0;i<4;i++){
if(i==1) break;
System.out.println(i);
}
//输出0,当i等于1后执行break,结束整个循环。
//增强循环
for(xxx v : arr){
v 范围[0~arr.length-1] 只能看不能改
}
即输出数组内所有元素
如:
int[] array = new int[10];
array[0] = 0; array[1] = 1;
for(int i=2;i<array.length;i++){
array[i]=array[i-2]+array[i-1];/
}
for(int c: array)
{ System.out.print(c+"\t"); }
此处代码最后两行即是将斐波那契数列前10项输出。
//一维数组
//变量概念:一种存储空间的表示
//数组概念:一组类型相同的 连续的 存储空间的表示
//优点
//1、类型相同:不用考虑类型
//2、连续:遍历
//缺点
//1、类型相同:无法解决不同类型多个值的存储
//2、连续:插入,移除 很麻烦
//使用数组四步骤
//1、声明 xxx[] array;
//2、分配空间 array = new xxx[int LENGTH];
//3、赋值 array[int INDEX] = VALUE;
//4、使用 System.out.println(array[int INDEX])
//数组的特性
//1、不可变
//2、长度固定: int len = array.length;
//3、下标(索引):0~array.length-1 ; 如果超出范围会报异常
例:
int[] a = new int[10];
for(int i=0;i<a.length;i++){
a[i]=i;
System.out.println(a[i]);
}
//特殊语法
// 1+2+3 : xxx[] array = {VALUE1,VALUE2,…};
int[] arr ={};
int[] arr2 = {5,7,9};
int[] arr3 = new int arr[]{5,7,9};