zl程序教程

您现在的位置是:首页 >  后端

当前栏目

java基础—第三章、流程控制

2023-09-11 14:21:22 时间

先来写一下第二章的练习三:

 

练习三:
        接受用户输入年份,判断是否为闰年。 年份能被4 整除,且不能被 100 整除的是闰年。 年份能被400 整除的是闰年。
//1.接收年份
System.out.println("请输入年份:");
Scanner scan  = new Scanner(System.in);

//2.获取年份
int year  = scan.nextInt();

//3.条件判断
String result  = (year % 4 == 0 && year % 100 != 0 || 
year % 400 == 0 ? "是闰年" : "是平年";

//4.输出结果
System.out.println(year + result);

目录

第一节、流程控制

第二节、顺序结构

第三节 、分支结构

一.if语句

二.if esle 语句

三. if  else if 语句

四.switch 语句

 

第四节、循环结构

一、while循环

二、do  while循环

三、for循环


第一节、流程控制

任何程序逻辑都是由顺序、分支和循环组成。 

程序在运行过程中,根据不同条件执行不同的结果

第二节、顺序结构

        自上而下,依次执行

int n = 9;
int num = 10;

num += n;

System.out.println(num);

第三节 、分支结构

一.if语句

1.格式:

//只有一条语句时,可加可不加花括号,但尽量不要省略花括号
if (条件表达式)        或:        if(条件表达式){
      语句1;                           语句1;
                                   }
    


//当有多条语句时,必须加花括号

if (条件表达式){
    语句1;
    语句2;
    .....
}

2. if流程图:

  3.例子:

int n = 5;
int num = 12;
if(n > 10)
{
    n -= 5;
}

if(n < 10){
    n += 5;
    num +=5;
}

二.if esle 语句

 1.格式:
//只有一条语句时,可加可不加花括号,但尽量不要省略花括号
if (条件表达式)        或:        if(条件表达式){
      语句1;                           语句1;
else                              }else{
       语句2;                          语句2;
                                       }
                                
                                   
    


//当有多条语句时,必须加花括号

if (条件表达式){
    语句1;
    语句2;
    .....
}else{
    语句1;
    语句2;
    .....
      }

2. if else 流程图:

3.  if else语句的执行逻辑:

           先判断条件表达式,如果为true,执行if{}中的语句,否则,执行else()的语句 

4.练习:判断45数偶数还是奇数:

int n = 45;

if(n % 2 == 0){
    System.out.println(n+"是偶数!");
}else{
    System.out.println(n+"是奇数!");
}

三. if  else if 语句

 具体逻辑参照if  else

//else if的执行逻辑 -- 简化了if else的嵌套 
int score = 61; 

if(score >= 90) { 
System.out.println("A"); 
} else if(score < 90 && score >= 80) { 
        System.out.println("B"); 
} else if(score < 80 && score >= 60) { 
        System.out.println("C"); 
} else {
        System.out.println("D");
}

四.switch 语句

1.switch-case的语句执行逻辑
  •   一种特殊的分支,运行通道与switch(整型表达式)中的整型表达式有关。

  • 当传入整型常量值时,执行对象case通道。
  • 且每一个case通道都必须要和break关键字配合使用,如果不加break,就会执行下一个case,直 到遇到break为止或执行完全部的case
  • !!!case后面必须跟整型常量值
  • switch(整数表达式)中整数表达式的类型只能为:
  1. byteintshort
  2. char
  3. String表达式(1.7更新后)
  • case 整型常量值中整型常量值的取值范围只能为:
  1. 必须为整型-不能超出int的取值范围。
  2. 必须为常量或常量表达式( 1/1 5-4)

2. switch-case分支演示

   2.1.每个case后面都有break语句

int i = 1; 
switch(i){ 
case 0: System.out.println("0"); break; 
case 1: System.out.println("1"); break; 
case 2: System.out.println("2"); break; 
default: System.out.println("null"); 
}
//执行结果为1

  2.2.个别case后有break语句

int i = 1; 
switch(i){ 
case 0: System.out.println("0"); break; 
case 1: System.out.println("1"); 
case 2: System.out.println("2"); break; 
default: System.out.println("null"); 
}
/*执行结果为:
             1
             2
*/

2.3.每个case后都没有break

int i = 1; 
switch(i){ 
case 0: System.out.println("0"); 
case 1: System.out.println("1"); 
case 2: System.out.println("2"); 
default: System.out.println("null"); 
}
/*执行结果为:
             1
             2
             null
*/

4.比较

  与if else结果相比优势:

  • 效率更高
  • 结构更清晰
  • JDK1.7版本后才开始支持字符串表达式的\

5.综合练习:

   判断成绩(score)的等级:

             score < 60 :不及格

             score > =   60  && socre  <  80:及格

             score > =   80  && socre  <  90:良好

             score > =   90  && socre  <=  100:优秀

public class SwitchTest {
    public static void main(String[] args) {

        int  score = 65;
        switch(score / 10){
            case 0:
            case 1:
            case 2:
            case 3:
            case 4:
            case 5:   System.out.println("不及格");break;
            case 6:
            case 7:   System.out.println("及格");break;
            case 8:   System.out.println("良好");break;
            case 9:
            case 10:  System.out.println("优秀");break;
        }
    }
}

 

第四节、循环结构

循环:一组相同或相似的语句被有规律的重复执行

一、while循环

1.格式:

while(boolean   循环条件){//当boolean表达式的值为true时执行循环体
   循环体;
}

2.while用于处理循环逻辑

//计算0-100的和 
int i = 0;//循环变量 
int sum = 0;//结果 

while(i <= 100) { 
    sum += i;//累加 
    i ++;//循环变量自增 
}

3.while循环与break配合使用

   break:强制退出循环

//计算0-50的和 
int i = 0;//循环变量 
int sum = 0;//结果 

while(i <= 100) { 
     sum += i;//累加 
     i ++;//循环变量自增 
     if(i == 50) {
         break;
     }
 }

3.while循环与continue配合使用

  continue:提前结束本次循环,继续下一次循环

//计算0-100的和,但不包括50
int  i = 0;
int sum = 0;
       
while(i <= 100){

  if(i == 50){
     i ++;
     continue;

  }
 sum +=i;
 i ++;
}

二、do  while循环

1.格式:

do{ 
  循环体 
}while(boolean表达式);    // 当boolean表达式为true,会执行循环体

2.do while用于处理循环逻辑

int pwd; 
do{ 
   System.out.println("请输入密码"); 
   pwd = scan.nextInt(); 
}while(pwd != 123456);    // 判断输入的密码是否为123456,直到输对为止
3.do while while 的区别
  • while是先判断后执行的,而dowhile是先执行后判断
  • do while无论条件满足或者不满足都会先执行一次循环体

三、for循环

1.格式:

   for(循环变量1;循环条件;循环变量的改变){

​             循环体; 

    }

2.for循环的三要素:循环变量、循环条件、循环变量的改变

3.执行流程:

  1. 循环变量,且只执行一次
  2. 循环条件
  3. 循环体
  4. 循环变量的改变

4.for循环的变形:

int i = 0;

for(;i < 101;){

   i   ++;     
 
}

5.自造死循环的for循环

for(;;)   //自造死循环

6.有固定次数的循环

int  sum = 0;
for(int i = 0;i <= 100;i ++){
    if (i % 10 == 3 )
        continue;
    sum += i;
}
System.out.println(sum);

7.应用:

   1.九九乘法表:



public class TestNine {

    public static void main(String[] args) {

        /*
        1.嵌套for循环——外层循环控制行数,内层循环控制列数
        2.外层循环循环一次,内层循环循环完
         */
        for (int i = 1;i <= 9;i ++){
            for (int j = 1;j <= i; j ++){
                System.out.printf("%d*%d=%-2d   ",j ,i,i*j);
            }
            System.out.println();
        }
    }
}

  2.打印空心三角形:

  


public class HomeWork4 {
    public static void main(String[] args) {

        for (int i = 0;i < 10; i ++){
            for(int j = 0;j <= i;j ++ ){
                if (j == 0  || i == 9 || j == i){
                    System.out.print("*");

                }
                else {
                    System.out.print(" ");
                }
            }
            System.out.println();
        }
    }
}

3.打印实心等腰三角形:

package com.hqyj.javacode.loop;

public class HomeWork5 {

    public static void main(String[] args) {
        for (int i = 0; i < 10; i++) {
            for (int j = 0; j < 10 - i; j++) {
                System.out.print(" ");

            }
            for (int k = 0; k < i; k++) {
                //if(k == 0 || k == i)
                System.out.print("*"+" ");
            }
            System.out.println(" ");
        }
    }
}