Java流程控制

1.if-else条件判断结构

1.1基本结构

/* 分支结构:if-else条件结构判断 1.格式

1: if(条件表达式){

语句块

}

2.格式2:

if(条件表达式){

语句块

}else{

语句块

}

3.格式3:

if(条件表达式){

语句块

}else if(条件表达式){

语句块

}

...

}else if(条件表达式n){

语句块

}else{

语句块

}

*/

1.2基本运用

1.3实际运用

public class if_else {
    public static void main(String[] args) {
     /*
     案例1:成年人心率的正常范围为每分钟60-100次,体检时,
     如果心率不在范围内,则需要进一部的检查。
      */
        int hert=90;
        if (hert>=60&&hert<=100){
            System.out.println("该成年人心率正常,无需进一步检查");
        }else {
            System.out.println("该成年人心率不正常,需要进一步检查");
        }
        //************************************************************//
        /*
        案例2:定义一个整数,判断为奇数还是偶数
         */
        int number=100;
        if (number%2==0){
            System.out.println(number+"为偶数");
        }else {
            System.out.println(number+"为奇数");
        }
        //************************************************************//
        /*
        案例3:小柴参加考试,现有如下条件:
        如果成绩为100分,奖励一辆跑车,
        成绩为(80,99】时,奖励一辆山地自行车,
        成绩为【60,80】时,奖励环球影城一日游,
        否则,胖揍一顿
         */
        int grades=10;
        if (grades==100){
            System.out.println("小柴的成绩为:"+grades+",奖励一辆跑车");
        } else if (grades>80&&grades<=90) {
            System.out.println("小柴的成绩为:"+grades+",奖励一辆山地自行车");
        } else if (grades>=60&&grades<=80) {
            System.out.println("小柴的成绩为:"+grades+",奖励环球影城一日游");
        }else {
            System.out.println("小柴的成绩为:"+grades+",胖揍一顿");
        }
        /*如果多个表达式之间没有交集(互斥关系),则哪个条件表达式在上面,哪个在下面都可以。
        如果多个表达式之间包含关系,则需要将范围小的条件表达式声明在范围大的条件表达式上面,否则范围小的不会执行。
         */
    }
}

1.4if-else嵌套

import java.util.Scanner;

/*
if-else嵌套使用
 */
public class if_else_plus {
    public static void main(String[] args) {
        //案例:由键盘输入三个整数,分别存入num1,num2,num3,对他们进行排序,并且从大到小输出
        Scanner sc=new Scanner(System.in);
        while (true) {
            System.out.println("输入第一个整数:");
            int num1=sc.nextInt();
            System.out.println("输入第二个整数:");
            int num2=sc.nextInt();
            System.out.println("输入第三个整数:");
            int num3=sc.nextInt();
            contains(num1,num2,num3);
        }
    }
    public static void contains(int num1,int num2,int num3){
        if (num1>num2){
            if (num2>num3){
                System.out.println(num1+">"+num2+">"+num3);
            }else {
                if (num3>num1){
                    System.out.println(num3+">"+num1+">"+num2);
                }else {
                    System.out.println(num1+">"+num3+">"+num2);
                }
            }
        }else {
            if (num1>num3){
                System.out.println(num2+">"+num1+">"+num3);
            }else {
                if (num3>num2){
                    System.out.println(num3+">"+num2+">"+num1);
                }else {
                    System.out.println(num2+">"+num3+">"+num1);
                }
            }
        }
    }
}

2.Scanner类,键盘录入

/*

1.使用Scanner类获取不同的类型数据的步骤

步骤1:导包 import Java.util.Scanner;

步骤2:提供(创建)一个Scanner类的实例

步骤3:调用Scanner类中的方法,获取指定类型的变量;

步骤4:关闭资源,调用Scanner类的close();

*/

3.如何获取一个随机数?

/*如何获取一个随机数 ?
1.可以使用Java提供的API:Math类的random();
 2.random()调用后,会随机生成一个【0.0-1.0)之间的double类型的数; 
3.如何获取【0,100】的随机数呢? 
(int)(Math.random()*101)
 4.获取一个【a,b】的随机数 
(int)(Math.random()*(b-a+1))+a 
*/
public class random {
    public static void main(String[] args) {
        int i=(int)(Math.random()*100)+1;//范围是[1,100]
        int i1=(int)(Math.random()*101);//范围是[0,100]
    }
}

4.switch-case选择结构

4.1基本结构

switch (表达式){
    case 常量值1:
        语句块;
        break;
    case 常量值2:
        语句块;
         break;
    case 常量值3:
        语句块;
        break;
        ...
    default :
        语句块;
         break;
}

 4.2执行流程图

4.3执行过程

/*
switch-case选择结构
1.switch (表达式){
           case 常量值1:
               语句块;
           case 常量值2:
               语句块;
           case 常量值3:
               语句块;
               ...
           default :
               语句块;
       }
2.执行过程:
根据表达式的值,依次匹配case语句,一旦与某个case中的常量值相等,那么就执行此case中的执行语句。
执行完语句后,
           情况1:遇到break,则直接跳出switch-case结构
           情况2:没有遇到break,则继续执行其后的case中的执行语句,直到遇到break,或执行完所有的
           case语句以及default语句。
 */

4.3.1说明:

1.switch中的表达式只能是特定的数据类型。如:byte / short / int / char / 枚举(JDK5.0新特性) / String(JDK7.0新特性)

2.每条语句后都要带break,防止case穿透。

3.case后跟的都是常量,不能进行范围判断。

4.switch中通常case的匹配情况都有限。

5.default 是可选的,并且位置是灵活的。

5.循环结构

5.1循环结构分类:

for循环

while循环

do-while循环

5.2循环四要素:

1.初始化条件

2.循环条件

3.循环体

4.迭代部分

5.3for循环

for循环的格式
for(初始化条件;循环条件;迭代部分){
    循环体
}
public class forTest {
    public static void main(String[] args) {
  //遍历1-100以内的偶数,并且获取偶数的个数和所有偶数的和
       contains();
    }
    public static void contains(){
        int sum=0;//记录偶数的个数
        int count=0;//记录所有偶数的和
        for (int i = 1; i <= 100; i++) {
            if (i%2==0){//判断是否为偶数
                count++;
                sum+=i;
                System.out.print(i+", ");
            }
        }
        System.out.println("1-100以内的偶数共有"+count+"个,所有偶数的和为"+sum);
    }
}

案例: 

import java.util.Scanner;

public class forTest02 {
    public static void main(String[] args) {
        //求两个数的最大公约数和最小公倍数
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入第一个数:");
        int num1=sc.nextInt();
        System.out.println("请输入第二个数:");
        int num2=sc.nextInt();
        contains(num1,num2);//最大公约数
        contains1(num1,num2);//最小公倍数
    }
    public static void contains(int num1,int num2){
        if (num1>=num2){
            for (int i = num2; i >=0; i--) {
                if (num1%i==0&&num2%i==0){
                    System.out.println(num1+","+num2+"的最大公约数为"+i);
                    break;
                }
            }
        }else {
            for (int i = num1; i >=0; i--) {
                if (num1%i==0&&num2%i==0){
                    System.out.println(num1+","+num2+"的最大公约数为"+i);
                    break;
                }
            }
        }
    }
    public static void contains1(int num1,int num2){
        int max=(num1>num2) ? num1:num2;
        for (int i = max; i <= num1*num2; i++) {
            if (i%num1==0&&i%num2==0){
                System.out.println(num1+","+num2+"的最小公倍数为"+i);
                break;
            }
        }
    }
}

5.4 while循环

while(循环条件){

循环体

迭代部分·

案例

import java.util.Random;
import java.util.Scanner;

public class whileTest {
    public static void main(String[] args) {
        //猜数字
        Random r=new Random();
        Scanner sc=new Scanner(System.in);
        int number= r.nextInt(100);
        int count=1;
        while (true) {
            System.out.println("输入你猜的数字:");
            int num=sc.nextInt();
           if (num==number){
               System.out.println("恭喜你!猜对了!");
               break;
           } else if (num>number) {
               System.out.println("大了");
               count++;
           }else {
               System.out.println("小了");
               count++;
           }
        }
        System.out.println(count);
    }

}

5.5do-while循环 

初始化条件

do{

循环体

迭代部分

}while(循环条件)

说明·:

1.do-while至少循环一次循环体

2.for,while,do-while三者之间可以相互转换

3.do-while在开发中,相对于for,while用的相对较少

案例:

import java.util.Scanner;

/*
案例:银行取款
声明变量balance初始化为0,用来表示银行的账户余额,下面通过ATM机程序实现存款,取款等功能
===========ATM==================
1.存款
2.取款
3.显示余额
4.退出
请选择(1-4):
 */
public class do_while {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int sumMony=0;//定义账余额
        boolean flag=true;
        do {
            System.out.println("==================ATM==================\n" +
                    "1.存款\n" +
                    "2.取款\n" +
                    "3.显示余额\n" +
                    "4.退出\n" +
                    "请选择(1-4):");
            int choice= sc.nextInt();
            if (choice==1){
                System.out.println("请输入你要存款的金额:");
                int mony=sc.nextInt();
                sumMony=mony;//存款操作
            } else if (choice==2) {
                System.out.println("请输入你要取出的金额:");
                int takeMony=sc.nextInt();
                sumMony-=takeMony;//取款操作
            } else if (choice==3) {
                System.out.println("当前账户的余额为:"+sumMony);//查询余额
            }else {
                flag=false;//退出操作
            }
        }while (flag);

    }
}

6.三种循环结构对比

7.嵌套循环案例

多练!多练!多练!锻炼你的逻辑思维!

public class test {
    public static void main(String[] args) {
        /*案例 在控制台打印一个菱形
--------*
------* * *
----* * * * *
--* * * * * * *
* * * * * * * * *
--* * * * * * *
----* * * * *
------* * *
--------*
关键点 找关系:
i(第几行)          j(每一行中空格的个数)           k(每一行中*的个数) 
1        10-i*2      8                2*i-1         1             
2                    6                              3
3                    4                              5
4                    2                              7
5                    0                              9
         */

        //上半部分
        for (int i = 1; i <= 5; i++) {
            for (int j = 1; j <= 10 - 2 * i; j++) {
                System.out.print(" ");
            }
            for (int k = 1; k <= 2 * i - 1; k++) {
                System.out.print("* ");
            }
            System.out.println();
        }

        //下半部分
        for (int i = 1; i <= 4; i++) {
            for (int j = 1; j <=i * 2 ; j++) {
                System.out.print(" ");
            }
            for (int k=1;k<=9-2*i;k++){
                System.out.print("* ");
            }
            System.out.println();
        }
    }
}
/*
案例:九九乘法表(新手小白一定要练一练****推荐)
1*1=1
2*1=2   2*2=4
3*1=3   3*2=6   3*3=9
4*1=4   4*2=8   4*3=12  4*4=16
...
9*1=9   9*2=18  9*3=27  9*4=36  9*5=45  ...
 */
public class test01 {
    public static void main(String[] args) {
        for (int i = 1; i <= 9; i++) {
          for (int j=1;j<=i;j++){
              System.out.print(i+"*"+j+"="+i*j+"   ");
          }
            System.out.println();
        }
    }
}

8.关键字break和continue的使用

8.1break和continue的说明:

8.2应用案例:

public class breakContinueTest {
    public static void main(String[] args) {
        //找出100以内的所有素数 ,素数:只能被1和他本身整数
        long l = System.currentTimeMillis();
        int count = 0;//统计素数的个数
        for (int i = 2; i <= 100000 ; i++) {
            boolean flag = true;
            for (int j = 2; j <= Math.sqrt(i); j++) {  //Math.sqrt是求平方根的API
                if (i % j == 0) {
                    flag = false;
                    break;
                }
            }
            if (flag) {
                count++;
                System.out.print(i + ",");
            }
        }
        System.out.println();
         Long e=System.currentTimeMillis();
        System.out.println(count);
        System.out.println(e-l);
    }
}

企业真题

 

   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值