文章目录
1 分支结构:
单if分支
if-else双重分支
else if多重分支
switch多重分支
具体内容
1.1 程序结构
所谓的程序结构指的就是代码的执行的过程。按照怎样的要求进行执行。
程序——模拟现实的。
顺序结构:
典型一行执行完毕之后执行下一行,每一行都必须执行。
所有语言都有,默认都是顺序结构。
分支结构:
处理选择。
循环结构:
处理循环一直操作一模一样的东西的代码。抄写单词自己输出n遍,如果引入循环结果可以只写一遍,但是执行n遍。
1.2 分支结构
如果(气温<5){
// 不去上课
}else{
// 去上课
}
分支结构主要控制代码是否执行。
案例:输入你的java成绩,如果在90以上,输出 优秀! 在 70–90之间输出,良好! 60-70 之间输出 一般!60以下输出 不及格!
1.3 if分支
单if分支(5分钟)
如果碰到条件的时候,如果成立我会去执行一个代码块(多个语句的集合),如果不成立,而是结束分支结构,继续后续的代码。如果{}中的语句块只有一句话,{可以省略,但是不建议。
语法:
if(条件 为真){
条件成立时执行的代码块;
}
如果条件成立,执行对应的代码块,如果不成立,if终止直接执行if后的代码。
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入金额");
int money = scanner.nextInt();
// 条件为真 执行后面的代码快里面的语句
if( money > 100 ){
System.out.println("你是一个富豪");
}
System.out.println("条件执行完毕");
}
if-else双重分支(5分钟)
如果条件成立执行一个对应的代码块,如果不成立执行另外一个代码块。
if(条件表达式){
成立的代码块
}else{
条件不成立执行的代码块
}
// 后续代码
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入金额");
int money = scanner.nextInt();
// 条件为真 执行后面的代码快里面的语句
if( money > 100 ){
System.out.println("你是一个富豪");
}else{
// money<=100
// 代表 if里面的条件不成立 或者 跟if里面的条件互斥
System.out.println("啥也不是");
}
System.out.println("条件执行完毕");
}
else if多重分支(8)
如果条件1成立执行对应代码块,如果不成立,进行条件2判断,如果条件2成立执行对应代码块不成立继续判断条件3依次类推,如果都不成立,执行else,如果没有else ,if分支结束执行后续代码。
if(条件1){
条件成立的代码块
}else if(条件2——隐含条件是1不成立){
条件2成立的代码块
}else if(条件3-隐含2不成立){
条件3成立的代码块
}.....
else{
}
// if 只能有一个 else 只能有一个 else if 可以有多个
注意:每一个条件都有一个隐式条件,所以不能乱序。(不是绝对不能,如果乱序可以通过条件的显示声明给规避了)
public static void main(String[] args) {
int score=99;
/**
* 声明一个变量接收小明额成绩:如果成绩及格可以休息一天,如果不及格就罚跑圈。
* 100休息一天
* >90 休息半天
* >80 睡个懒觉
* >=60 正常学习
* 不及格:跑圈
*/
if(score==100){
System.out.println("休息一天");
}else if(score>=90){
System.out.println("休息半天");
}else if(score>=80){
System.out.println("睡个懒觉");
}else if(score>=60){
System.out.println("正常学习");
}else{
System.out.println("跑圈!!!!!!!!");
}
}
1.4 switch多重分支
switch也是做多重分支,但是只能做等值判断。
在jdk5之前 只能是基本数据类型的等值判断 但是 jdk5之后 可以用于字符串的等值判断
如果处理等值判断,switch语法上比else if更简洁,而且效率更快。
/*
* 返回的是一个常量值,这个不是一个truefalse而是具体的值,这个值可以是
数字(整数),字符、可以是字符串,但是不能是boolean也不能是其他的引用数据类型
*
* 首选表达式结果和值1判断,如果成立,执行后续的语句块,
* 直到碰到break,如果没有break,后续所有代码都将执行,直到switch结束。
* 如果不成立,会判断case 2的值,成立,执行语句块2,直到碰到break....
* 。。。。。。
* 如果都不成立,执行default。
* */
switch(表达式){
case 值1:语句块1;[break;] 相当于:if(表达式==值1){语句块}
case 值2:语句块2;[break;]相当于:else if(表达式==值2){语句块}
case 值3:语句块3;[break;]相当于:else if(表达式==值3){语句块}
case 值4:语句块4;[break;]相当于:else if(表达式==值4){语句块}
default:默认语句块; 相当于:else{}
}
int score=90;
switch (score/10){
case 10:
System.out.println("休息一天");break;
case 9:
System.out.println("休息半天");break;
case 8:
System.out.println("睡个懒觉");break;
case 7:
//System.out.println("正常学习");break;
case 6:
System.out.println("正常学习");break;
default:
System.out.println("跑圈!!!");break;
}
1.5 三目运算符:
条件? 成立 : 不成立
public static void main(String[] args) {
int score = 100;
// if(score > 100){
// score +=100; //==> score = score+100;
// }else{
// // score - 50
// score-=50;// =>score = score-50;
// }
// 条件?成立:不成立
// 条件? 成立 : 不成立 三目运算符 三元表达式 ?表达式 :表达式
score = score>100 ? score+100 : score-50; // 代码简洁
System.out.println("score的值:"+score);
}
2 循环
2.1 While循环
语法结构:
循环变量初始化;
while(循环条件--返回的是true或者false,如果条件成立,进入循环体){
循环体;
循环变量更替;
}
流程:首先进行循环条件初始化;进行判断,如果成立进行循环体,如果不成立推出循环。执行循环体之后继续进行条件判断。
public static void main(String[] args) {
int cishu=0;
while(cishu<3) {//循环条件
System.out.println("鹅鹅鹅,曲项向天歌!");
System.out.println("白毛浮绿水,红掌拨清波。");//循环体
cishu=cishu+1;//循环变量更替
}
}
写个例子 一到一百的和
public static void main(String[] args) {
/*
sum1=0+1
sum2=0+1+2;=sum1+2
sum3=0+1+2+3;=sum2+3
sum4=0+1+2+3+4;=sum3+4
.....
sum100=99的和+100=sum99+?
sum=上一个sum+当前的数字
*
* */
int sum=0;
int num=1;
while(num<=100){//循环条件
sum=sum+num;//循环体
num=num+1;//循环变量更替
}
System.out.println(sum);
2.2 do while
do{
循环体;
循环变量更替;
}while(条件);
执行循环体,循环变量更替,进行条件判断,如果条件成立,继续循环体…
do-while是先执行后判断,循环体至少执行一次。
2.3 for 循环(重点)
for(1. 循环变量初始化;2. 循环条件;4.循环变量更替){
3.循环体
}
首先1–>2判断–如果为true执行3----执行4更替----重新2判断–如果成立重新3 4—2判断,2为false推出循环。
for(int num=1;num<=100;num=num+1){
sum=sum+num;
}
System.out.println(sum);
//for循环的简化版,for后边的三个东西都可以不屑,但是;不能省略。
int sum=0;
int num=1;
for(;num<=100;){
sum=sum+num;
num=num+1;
}
System.out.println(sum);
2.4 break 和coutinue
break:终止循环。起到的作用与循环条件类似——不成立出循环;break碰到break就出循环。
一般break配合if使用
while(true){
score=scanner.nextInt();
System.out.println(score);
if(score<0){
break;//碰到break,循环终止相当于:while条件为false退出循环。
}
}
int sum=0;
int num=1;
for(;;){//中间条件不写就是true for(;true;)
sum=sum+num;
num=num+1;
if(num>100){
break;
}
}
System.out.println(sum);
/*
continue:
终止本次循环继续下一次。
*/
//1-100输出所有偶数
for(int i=1;i<=10;i=i+1){
if(i%2==0){
System.out.println(i);
}
}
for(int i=1;i<=10;i=i+1){
if(i%2!=0){
continue;//如果奇数就继续,后续代码不执行
}
System.out.println(i);
}
}