第一章流程控制
1.1概述:在程序执行时,各条语句的执行顺序对程序的结果是有直接影响,也就是说程序的流程对运行结果也有直接影响。
所以我们在运行程序时,就需要流程控制。
1.2顺序结构--从上到下依次执行
public class Demo{
public static void main(String[] args){
/*
int num = 10;
System.out.println(num);*/
System.out.println("A");
System.out.println("B");
System.out.println("C");
}
}
1.3分为三类
(1)顺序结构
(2)选择结构
(3)循环结构
第二章分支/选择结构--让代码有选择性的执行
俩种:if/switch
2.1if选择语句
三种格式
1.if(布尔表达式){语句体}
代码
public class Demo{
public static void main(String[] args){
boolean sex = true;//表示男
if(sex){
System.out.println("进男厕所");
}
System.out.println("回来上课");
}
}
2.if(布尔表达式){语句体}else{语句体}
执行流程
代码
public class Demo{
public static void main(String[] args){
boolean sex = false;
if(sex){
System.out.println("进男厕所");
}else{
System.out.println("进女厕所");
}
System.out.println("回来上课");
}
}
3.if(布尔表达式){语句体}else if(布尔表达式){语句体}else if(布尔表达式){语句体}else{语句体}
哪个布尔表达式为true就执行它的语句体,跳到结束位置
代码
public class Demo{
public static void main(String[] args){
/*
90-100 优秀
80-89 好
70-79 良
60-69 及格
60以下 不及格*/
//模拟用户输入的
int score = 98;
if(score >= 90 && score <= 100 ){
System.out.println("美女");
}else if ( score>= 80 && score <= 89 ){
System.out.println("法拉拉拉拉利");
}else if ( score>=70 && score <= 79){
System.out.println("500万");
}else if ( score>=60 && score<=69){
System.out.println("100万");
}else if ( score >= 0 && score <= 59){
System.out.println("笨蛋");
}else{
System.out.println("输入的成绩有错,超出0-100的范围");
}
}
}
4.if的第二种格式与三元运算符
1if-else语句体都是对同一个变量进行赋值时
2.三元运算符更简单
代码
public class Demo{
public static void main(String[] args){
//模拟用户输入
int a = 100;
int b = 20;
/*
int max ;
//
if(a > b ){
max = a;
}else{
max = b;
}
System.out.println(max);*/
int max = a > b ? a : b;
System.out.println(max);
}
}
2.2switch语句
1.当我们计算一个表达式的值,与一堆不相同的常量进行比较时,匹配到就执行语句体,
都不匹配就执行默认语句体
格式
表达式结果只能是byte short int char String
switch(表达式){
case 常量1:
执行语句体1
break;
case 常量2:
执行语句体2
break;
case 常量2:
执行语句体2
break;
.....
default:
执行语句体n
break;
}
代码
public class Demo{
public static void main(String[] args){
//1,模拟用户输入
int day = 3;
//2,
switch(day){
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
case 3:
System.out.println("星期三");
break;
case 4:
System.out.println("星期四");
break;
case 5:
System.out.println("星期五");
break;
case 6:
System.out.println("星期六");
break;
case 7:
System.out.println("星期日");
break;
default:
System.out.println("你是笨蛋,怎么输入的");
break;
}
}
}
2switch 执行流程
1.计算表达式的值
2.根据值直接跳分支常量,执行对应的语句体,break直接跳到结束
3.跳到default分支,执行对应的语句体,break直接跳到结束
【匹配上哪个分支,就执行他的语句体,跳到结束位置】
3switch语句穿透性
如果你省略了标准格式中的break,就会发生穿透性,直接执行分支的语句体,不做匹配,知道结束
当多个分支需要执行相同的语句体时,使用穿透性可以简化代码
代码
public class Demo{
public static void main(String[] args){
//1,根据月份的数字,打印月份的名字
/*
3,4,5 春
6,7,8 夏
9,10,11 秋
12,1,2 冬
*/
int m = 8;
switch(m){
case 3:
case 4:
case 5:
System.out.println("春");
break;
case 6:
case 7:
case 8:
System.out.println("夏");
break;
case 9:
case 10:
case 11:
System.out.println("秋");
break;
case 12:
case 1:
case 2:
System.out.println("冬");
break;
}
/*
int num = 1;
//byte short int char String
switch(num){
case 1:
System.out.println("执行语句体1");
//break;
case 2:
System.out.println("执行语句体2");
break;
default :
System.out.println("执行default语句体");
break;
}*/
}
}
2.2循环结构
让相同的代码被重复执行,指定执行次数
包含三个语句
1.for
2.while
3.do-while
for循环
格式
for(初始化语句体;布尔表达式;步进表达式){循环体}
执行流程
public class Demo{
public static void main(String[] args){
/*
System.out.println("媳妇我错了");
System.out.println("媳妇我错了");
System.out.println("媳妇我错了");
System.out.println("媳妇我错了");
System.out.println("媳妇我错了");
System.out.println("媳妇我错了");
System.out.println("媳妇我错了");
System.out.println("媳妇我错了");
System.out.println("媳妇我错了");
System.out.println("媳妇我错了");*/
//①初始化语句 计算器 int i = 0;
//②循环条件 布尔表达式 i < 10
//③循环体被重复执行的代码
//④步进表达式 i = i+1 i+=1 ++i i++
for( int i = 0; i < 10; i++){
System.out.println("媳妇我错了");
}
}
}
while循环
格式
初始化语句
while(布尔表达式){循环体;步进表达式}
public class Demo{
public static void main(String[] args){
/*
System.out.println("媳妇我错了");
System.out.println("媳妇我错了");
System.out.println("媳妇我错了");
System.out.println("媳妇我错了");
System.out.println("媳妇我错了");
System.out.println("媳妇我错了");
System.out.println("媳妇我错了");
System.out.println("媳妇我错了");
System.out.println("媳妇我错了");
System.out.println("媳妇我错了");*/
//
int i = 0;
while(i < 10){
System.out.println("媳妇我错了");
i++;//一定要有步进语句
}
}
}
do-while循环
格式
初始化语句体
do{循环体;步进表达式}while(布尔表达式)
public class Demo{
public static void main(String[] args){
/*
System.out.println("媳妇我错了");
System.out.println("媳妇我错了");
System.out.println("媳妇我错了");
System.out.println("媳妇我错了");
System.out.println("媳妇我错了");
System.out.println("媳妇我错了");
System.out.println("媳妇我错了");
System.out.println("媳妇我错了");
System.out.println("媳妇我错了");
System.out.println("媳妇我错了");*/
//
int i = 0;
do{
System.out.println("媳妇我错了");
i++;//一定要记住要有步进
}while( i < 10); //一定要记住结束位置有一个分号
}
}
练习
public class Demo{
public static void main(String[] args){
//
//打印1-100
//System.out.println(1);
//System.out.println(2);
//System.out.println(3);
/*
for( int i = 1; i <= 100; i++ ){
System.out.println(i);
}*/
//打印1-100之间所有偶数
/*
for( int i = 1; i <= 100; i++ ){
//作一个条件判断,只要是偶数我才打印
if(i % 2 == 0){
System.out.println(i);
}
}*/
//求1-100之间所有偶数的和
int sum = 0;//只要有一个,不能写在循环体
for( int i = 1; i<=10 ; i++){
//作判断
if(i % 2 == 0 ){
//sum = sum + i;
sum += i;
}
}//end
System.out.println(sum);
}
}
循环小结
1.for最常用 计算要有明确的范围
2.while比较常用 IO流/范围不需要太明确
3.do-while不是很常用 必须要执行一次循环体
区别
1.do-while无论循环条件是不是满足至少执行一次
2.除了for其他循环的计数器,在循环结束时还能使用
public class Demo{
public static void main(String[] args){
int i = 1;
do{
System.out.println(i);
i++;//2
}while(i>=100);//end
System.out.println(i);//i属于main的大括号,main没有结束,i不会被释放
/*
for(int j = 1;j<= 10;j++){
System.out.println(j);
}//end
*/
//System.out.println(j);//在for循环结束时,for都被释放了,属于它的变量j也被释放
}
}
2.3.break关键字和continue关键字
break也是java一个关键字
俩个使用地方
1.在switch语句中使用,跳到结束位置
2.在三种循环中也可以使用,立刻马上,跳到循环的结束位置
格式:break;
continue关键字
continue也是java中的一个关键字
1.只能在循环中使用
2.立刻马上跳过本次循环,继续下一次
public class Demo{
public static void main(String[] args){
/*
for(int i = 1;i<=5;i++){
if(i == 3){
break;
}
System.out.println(i);
}*/
for(int i = 1;i<=5;i++){
if(i %2 == 0){ //2
continue;//立马跳过本次循环,继续下一次
}
System.out.println(i);
}
}
}
2.4死循环
不能自己结束的循环,就是死循环
常见的几种格式
1for
2while
3do-while
死循环的出现情况
1.程序员写循环没有步进
2.程序员设计的需求
死循环可以退出 写上一个条件,里面写一个break;
public class Demo{
public static void main(String[] args){
//1.for
/*
for( ; true ; ){
System.out.println("--你永远对的.");
}*/
/*
for( ; ; ){
System.out.println("--你永远对的.");
}*/
//2.while
/*
while(true){
System.out.println("--你永远对的.");
}*/
//3.do-while
/*
do{
System.out.println("--你永远对的.");
}while(true);*/
//1,程序员写循环没有步进
/*
int i = 1;
while(i<=10){
System.out.println(i);
//i++;
}*/
//2,程序设计的需要
int i = 0;
while(true){
System.out.println(i);
i++;
if(i ==10){
break;
}
}
}
}
2.5嵌套循环
1.一个循环(外层循环)里面可以包含另一个循环(内层循环)
2.例子
for(...){
for(...){
...
}
}
3.当发现几个循环代码相同时,我们可以用嵌套循环来简化代码
4.例子5*8的长方形
* * * * * * * *
* * * * * * * *
* * * * * * * *
* * * * * * * *
* * * * * * * *
public class Demo{
public static void main(String[] args){
/*
4,例子: 5x8 的长方形
********
********
********
********
********
1,打印一行
2,打印五行
*/
//System.out.println("********");//a.需求变化 b. 星号太多花
/*
//1行
for(int l = 1 ; l<= 8; l++){
System.out.print("*");
}//end
System.out.println();
//2行
for(int l = 1 ; l<= 8; l++){
System.out.print("*");
}//end
System.out.println();
//3行
for(int l = 1 ; l<= 8; l++){
System.out.print("*");
}//end
System.out.println();
//4行
for(int l = 1 ; l<= 8; l++){
System.out.print("*");
}//end
System.out.println();*/
for(int h = 1;h <=5;h++){//外层循环
//打印一行8星的代码
for(int l = 1 ; l<= 8; l++){//内层循环
System.out.print("*");
}//end
System.out.println();
}
}
}
嵌套循环练习1正方形9*9
1.外层循环9次
2.重复执行:内层循环 打印9个*
public class Demo{
public static void main(String[] args){
/*
4,例子: 9x9 的正方形
*********
*********
*********
...
*/
for(int h = 1;h<=9;h++){ //外层循环
for(int l = 1;l<=9;l++){//内层循环
System.out.print("* ");
}
//换行,够9星就得另起一行
System.out.println();
}
}
}
嵌套循环练习2-打印三角形
public class Demo{
public static void main(String[] args){
/*
4,例子: 9x9 的三角形
h =1 打印 1星
h =2 打印 2星
h =3 打印 3星
...
h =9 打印 9星
*/
/*
for(int h = 1;h<=9;h++){
//每一行
for(int l = 1;l<= 9 ;l++){
System.out.print("* ");
}
//够星数就换行
System.out.println();
}*/
for(int h = 1;h<=9;h++){
//System.out.println(h);
for(int l = 1;l<= h ;l++){
System.out.print("* ");
}
//够星数就换行
System.out.println();
}
/*
//1行
for(int l = 1;l<= 1 ;l++){
System.out.print("* ");
}
//够星数就换行
System.out.println();
//2行
for(int l = 1;l<= 2 ;l++){
System.out.print("* ");
}
//够星数就换行
System.out.println();
//3行
for(int l = 1;l<= 3 ;l++){
System.out.print("* ");
}
//够星数就换行
System.out.println();
//4行
for(int l = 1;l<= 4 ;l++){
System.out.print("* ");
}
//够星数就换行
System.out.println(); */
}
}
嵌套循环练习3-9*9乘法表
1.在三角形的基础,快速开发99
(1)把*换成1*1=1
(2)将1换成变量
(3)字符串中内容要换成变量“+变量名+”
public class Demo{
public static void main(String[] args){
/*
4,例子: 9x9
1,在三角形的基础,快速开发99
(1) * 换成 1x1=1
(2)将1换成变量
*/
for(int h = 1;h<=9;h++){
//每一行
for(int l = 1;l<= h ;l++){
System.out.print(l+"x"+h+"="+(h*l)+" ");
}
//够星数就换行
System.out.println();
}
}
}