Java基础语法02——流程控制

Java基础语法02——流程控制

流程控制:顺序结构、分支结构、循环结构

  • 实现从键盘获取不同类型的变量——Scanner类

    步骤:

    1. 导包:import java.util.Scanner;

    2. Scanner实例化:Scanner scan = new Scanner(System.in);

    3. 调用Scanner的相关方法,来获取指定类型的变量:格式:Scanner.方法

      String类型——next()

      int类型——nextInt()

      double类型——nextDouble()

分支结构1——if-else结构

三种形式:

  1. /*
    if(条件表达式){
        执行语句;
    }
    */
  2. /*
    if(条件表达式){
        执行语句1;
    }else{
        执行语句2;
    }
    */
  3. /*
    if(条件表达式1){
        执行语句1;
    }else if(条件表达式2){
        执行语句2;
    }else if (条件表达式3){
        执行语句3;
    }
    ````````
    else{
        执行语句n;
    }
    */

if-else结构可以相互嵌套

【一旦满足,就会退出结构】

只有一个执行语句时,{}可以省略,但不建议省,容易出错

——>拓展:如何获取一个随机数?[a,b]

使用Math类下的random方法,产生的是double类型的数据,且范围为[0.0,1.0)

公式:int m = (int)Math.random()*(a-b+1)+a;

分支结构2——switch-case结构

switch-case结构格式:

/*
switch(表达式)//不是条件表达式
    case 常量1:
        执行语句1;
        break;//非必须
    case 常量2:
        执行语句2;
        break;//非必须
    ······
    default:
        执行语句;
*/
  1. 过程:将switch表达式的值与case常量的值匹配,匹配成功,执行相应case下的语句;执行后继续向下执行case其他执行语句,直至遇到break关键字或结构末尾结束。

  2. break关键字:可用在switch-case结构中,(可选的)遇到此关键字,跳出结构

  3. switch后表达式只能是如下六种类型:byte、short、int、char、枚举类型(JDK5.0新增)、String类型(JDK7.0新增)

  4. default:可选的,位置灵活的

循环结构1——for循环

  • 循环结构的四个部分:初始部分、循环条件部分、循环体部分、迭代条件部分

  • for循环的结构:

    /*
    for(初始;循环条件;迭代){
        循环体
    }
    //()里每一部分可以有多条语句
    //执行过程:初始——循环条件(结果为boolean类型)——(true)循环体——迭代——循环条件判断——循环体——迭代——······
    */
    //举例:输出5条HelloWorld语句
    public class Demo{
        public static void main(String[] args){
            for(int i=1;i<=5;i++){
                System.out.println("HelloWorld");
            }
        }
    }
  • break关键字的使用:遇到break,循环结束;跳出循环结构

循环结构2——while循环

while循环的结构

/*
初始
while(循环条件){
    循环体;
    迭代条件;//小心不要忘记,否则容易死循环
}
//执行过程:初始——循环条件(结果为boolean类型)——(true)循环体——迭代——循环条件判断——循环体——迭代——······
*/

循环结构3——do-while循环

do-while循环结构:

/*
初始
do{
    循环体;
    迭代条件;
}while(循环条件)
//执行过程略有不同:初始——循环体——迭代——循环条件——循环体——迭代——循环条件——······
​
//注意:do-while循环的循环体至少执行一次
*/

开发中使用前两种循环的情况比较多

——>拓展:最简单“无限循环格式”:while(true)for(;;) ——不知道循环次数是多少——可以通过break结束循环。

例题:从键盘输入多个不确定的整数,并输出正数和负数的个数,输入0时结束循环##

import java.util.Scanner;
public class Test1{
public static void main(String[] args){
    Scanner scan = new Scanner(System.in);
    int postivenumber = 0;
    int negtivenumber = 0;
    while(true){
        int num = scan.nextInt();
        if(num>0){
            postivenumber++;
        }else if(num<0){
            negtivenumber++;
        }else{
            break;
        }
    }
    System.out.println(postivenumber);
    System.out.println(negtivenumber);
}
}

嵌套循环

  • 层数不会太多,一般不会超过三层

  • 将一个循环结构A声明在另一个循环结构B的循环体中,就构成了嵌套循环

  • 外层循环:B;内层循环:A

  • 说明:

    1. 内层循环执行一遍,相当于外层循环执行一次

    2. 假设外层循环需要执行m次,内层循环需要执行n次。此时,内层循环的循环体一共执行了m*n次

    3. 技巧:外层循环控制行数,内层控制列数

//应用1:九九乘法表
public class Test1{
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();
    }
}
}
/*应用2:输出100以内的质数(常见笔试题)
质数:(素数)只能被1和它本身整除的自然数【最小的质数2】
——2~这个数-1 都不能被这个数整除
*/
public class Test2{
public static void main(String[] args){
    boolean b = true;//标识i是否被j除尽,一旦除尽,立刻更改其值
    for(int i=2;i<=100;i++){
        for(int j=2;j<=Math.sqrt(i);j++){//优化二:将j<i-1改成小于根号i
            if(i%j==0){
                b=false;
                break;//优化一:对本身是非质数的自然数的处理,只要有除尽的 就不是质数了
            }
        }
        if(b==true){
            System.out.println(i);
        }
        b=true;//重置b变量
    }
}
}

break、continue关键字的使用

使用范围循环中使用的作用相同点
break循环结构结束当循环关键字后面不能声明执行语句
continue循环结构结束当循环关键字后面不能声明执行语句
//说明1
public class Test3{
public static void main(String[] args){
    for(int i=1;i<=10;i++){
        if(i%4==0){
            //break;//输出:1 2 3
            continue;//输出:1 2 3 5 6 7 9 10
        }
        System.out.print(i+" ");
    }
}
}
//说明2:在嵌套循环中,break(continue)作用于离关键字最近的一层循环;
//如果想要指定对某一层循环起作用,可以使用标签,例子如下:
public class Test1{
public static void main(String[] args){
    label:for(int i=1;i<=4;i++){
        for(int j=1;j<=10;j++){
            if(j%4==0){
                break label;
                //continue;
            }
            System.out.print(j+" ");
        }
        System.out.println();
    }
}
}//输出结果:1 2 3

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Etlevent

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值