Java第三天-程序结构
- Java的三种程序结构
- 顺序结构
- 条件结构
-
- if
- if……else
- if……else if……else
- switch
- 循环结构
-
- while
- do……while
- for
- foreach
- break和continue的使用
学计算机的就是牛,一般人十个手指只能算10个数,学计算机的能算1024个数,因为我们用二进制——蓝桥
Java的三种程序结构
程序结构也叫流程控制:
程序在执行过程中,各条件语句的执行的顺序是有直接的影响的。
在程序中 ,可能出现不同的执行顺序,必须 自上而下顺序执行,或者 条件判断的顺序或者循环执行的顺序。
顺序结构
从头到尾,从上到下的依次执行的程序的代码。
条件结构
条件语句会根据不同的判断条件执行不同的代码
if
if条件语句主要用于告知程序到某一个条件成立时,必须执行满足该条件的相关语句
语法:
if (布尔值) {
语句块;
}
- 布尔值,必要的参数,单纯的布尔变量或者,关系表达式都可以,只要是能表达布尔值的都以用作条件判断。
- 语句块,可以是一条或多条的语句在一个区域之间的语句。
注:当if后面只有一句语句时是可以忽略大括号的(新手不建议这样)。
if……else
if……else语句时条件语句中最常用的一种形式,他会针对某中条件有选择地做出处理,通常表现为"如果满足某种条件,就执行某种处理,否则执行另一种处理"。
if (布尔值) {
满足条件语句块;
}else{
//否则另一种条件语句块;
}
就好比我去买水,如果我有5块钱我就可以买快乐水,否则只能买矿泉水。
这里就是5 > 3可以买快乐水,小于3块钱就只能喝矿泉水了。
if……else if……else
if……else if……else相当于是多条件判断了,不再像if……elsen那样只有有两个分支,而是多分支条件判断,可以判断多种条件的。
if (布尔表达式1) {
//如果满足此条件执行语句块1语句块1;
}else if (布尔表达式2) {
//不满足条件1满足条件2执行语句块2语句块2;
}else if (布尔表达式3) {
//不满足条件1且不满足条件2,但满足条件3执行语句块3语句块3;
}else{
//以上条件都不满足时执行else里面的语句块4语句块4;
}
else表示否则的意思,意思是所有条件都不满足时则执行else里的语句块。
int n = (int)(Math.random()*90); //生成随机数if(n < 18){
System.out.println("你未成年哦!");}else if(n >= 18 && n < 30){
System.out.println("青少年,你好!");}else if(n >= 30 && n < 50){
System.out.println("中年人!");}else if(n >= 50 && n < 70){
System.out.println("老年人!");}else{
System.out.println("晚年生活!!!");}System.out.println("n = " + n);
switch
switch也是条件分支,但是他是固定的值,例如:成绩判断如果你得到了A输出优秀,得到B输出成绩为良好,得到C输出及格,得到D输出不及格。
switch (用于判断的参数) {
case 常量表达式1 : 语句1;break;case 常量表达式2 : 语句2;break;case 常量表达式3 : 语句3;break;......default :语句4;break;
}
- 用于判断的参数:此时就不是表达式了,而是值,此处的值和下面的常量表达式进行等值判断,如果参数为A,case后面也是A的话就执行语句1,其他则不执行。
- case:的后面只能是常量或常量表达式
- default:表示以上的条件都不匹配时则执行default里的语句4,default是可有可无的,如果不写的话条件都不成立时则不执行switch里的任何代码。
- 如果不加break语句时,他会出现参透效果,也就是从条件达成的那一个case开始一直执行到有break语句时跳出,或者执行到default语句停止。(break的功能后面详细介绍)
int n = (int) (Math.random()*7+1); //生成随机数1~7的随机数switch (n){
case 1:System.out.println("这里是:" + n);break;case 2:System.out.println("这里是:" + n);break;case 3:System.out.println("这里是:" + n);break;case 4:System.out.println("这里是:" + n);break;case 5:System.out.println("这里是:" + n);break;case 6:System.out.println("这里是:" + n);break;case 7:System.out.println("这里是:" + n);break;//此处就并没有给default}
/* 模拟计算器的基本功能 */Scanner sc = new Scanner(System.in);System.out.println("输入第一个数:");int a = sc.nextInt();System.out.println("输入运算符:");char x = sc.next().charAt(0);System.out.println("输入第二个数:");int b = sc.nextInt();System.out.print("结果:");switch (x){
case '+':System.out.println(a+b);break;case '-':System.out.println(a-b);break;case '*':System.out.println(a*b);break;case '/':System.out.println(a/b);break;default:System.out.println("输入错误");}
注: switch 的表达式判断 只能等值比较 ,其中case的常量值 类型位: 整数型(byte short int long ),字符型,字符串型,枚举型。
循环结构
在我们程序中有些代码或条件往往是需要重复运行,此时为了代码的不必要的重复,程序就有了循环的结构,循环的去做重复的事情。在Java中有三大种类的循环结构(还有一种是for的变异种foreach)。
在Java程序中,重复的执行某一段代码 这个过程称之为循环, 为了避免出现死循环,循环分为四部分
? 1、初始条件
? 2、循环的判断条件 ,条件为true ,则进入循环体
? 3、循环体
? 4、迭代变量
while
while (条件表达式) {
语句块;
}
条件表达式:条件表达式返回的必须是布尔类型的值,如果条件成立就会执行while里的语句块,而且重复判断这个条件表达式是否成立,直到表达式为false时跳出循环,不再执行while里的语句块。
//计算 1到100的累加之和int sum=0;int n=1;while(n<=100){
sum+=n;n++; //迭代变量-控制循环次数}System.out.println("n:"+n);System.out.println("sum:"+sum);
do……while
在有些时候写循环时,我们需要先执行一边循环里面的语句再进行判断的时候,例如我们在登录的账号时,输入账号密码时我们都需要判断它的正确性,如果不正确我们就需要循环输入账号密码的语句再次进行判断,如果账号密码输入正确,就跳出循环。
do {
语句块;
}while (条件表达式);
先会执行语句块,然后再进行条件表达式的判断,如果成立他会再次执行语句块,知道条件不成立才会跳出循环。
int x = 0; //账号int y = 0; //密码do {
System.out.println("输入");Scanner sc = new Scanner(System.in);x = sc.nextInt();y = sc.nextInt();}while (!(x == 2 && y == 3));System.out.println("成功");
程序执行,会先让你输入账号密码,然后进行判断如果条件为true时就结束循环,否则重新输入账号密码。
for
for循环的升级版就是 foreach循环
for循环通常在明确循环次数的情况下使用, 它也分为四部分
语法:
for(初始值1 ; 循环判断条件2 ; 迭代部分3 ){
循环体4}或者初始值for( ; 循环判断条件 ; ){
循环体迭代部分}// 他们的区别是 初始值定义在for的外边,就可以在循环外边使用
循环执行流程:
?1243->243->243->243->。。。>2 为false 循环退出
例如 :循环输出5遍hello world
// i 表示计数器,从1开始 到5结束for(int i=1 ;i<=5 ; i++){
System.out.println("hello world");}
循环的执行顺序:
第一遍: i=1 1<5 成立 输出“hello world ” i++ i=2
第二遍 :2<=5 成立 输出“hello world” i=3
第三遍 : 3<=5 成立 输出”hello world“ i=4
第四遍: 4<=5成立 输出”hello world“ i=5
第五遍: 5<=5 成立 输出”hello world“ i=6
第六遍: 6<=5 不成立,退出
i=6
使用for循环计算1-的阶乘
// 使用for循环 计算 10的阶乘for(int i=1;i<=10;i++){sum*=i;}
for循环部分可以省略
// 死循环for(;;){System.out.println("hello");}
for(;true;){System.out.println("hello world");}
// 迭代部分的代码 可以 放入循环体中int i=0;for( ; i<10; ){
System.out.println("第"+i+"次输出");i++;}
foreach
foreach 是for的一变异体系,它的语法为:
for (int x : 数组) {
语句块;
}
在这里了解下有这个东西就好,一般遍历数组经常用到。
int[] a = {
2,3,4,5}; //定义数组for (int x : a) //foreach循环遍历这个数组System.out.println(x);
break和continue的使用
break:跳出整个循环不管循环条件是否成立,只要在循环里运行到了break时,它就会跳出这个循环。往往在循环一些不知道循环次数或者循环表达式时将表达式改为true作为一个死循环,然后使用break跳出这个循环。
for (int i = 0; i < 100; i++) {
if (i == 3)break;System.out.println(i);}//此时的循环只会循环三遍:0、1、2,因为当i等于3时它会执行break,跳出这个循环。
continue:跳出循环一次,假如我们要输出20以内的奇数,我们就不能使用break跳出整个循环,我们需要跳出一次的效果。
for (int i = 0; i < 20; i++) {
if (i % 2 == 0)continue;System.out.println(i);}//将i和2求余如果等于0就跳出一次不执行后面的输出的语句,不等于时输出这个i就是奇数