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

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

流程控制:顺序结构、分支结构(if-else、switch-case)、循环结构(for、while、do-while)

  • 实现从键盘获取不同类型的变量——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
posted @ 2022-03-27 20:35  哆啦L  阅读(74)  评论(0编辑  收藏  举报