java入门09--循环与分支

Posted acrifhy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java入门09--循环与分支相关的知识,希望对你有一定的参考价值。

java入门09

顺序结构

代码块1 代码块2

语句与语句之间,框与框之间是按从上到下的顺序进行的,它是由若干个依次执行的处理步骤组成的。

选择结构

  • if单选择结构

语法:

if(布尔表达式)
    //如果布尔表达式为true将执行的语句

  • if双选择结构

语法:

if(布尔表达式)
    //如果布尔表达式的值为true
else
    //如果布尔表达式的值为false

例如:

package structure;

import java.util.Scanner;

public class Demo02 
    public static void main(String[] args) 
        //判断输入的成绩是否及格

        Scanner scanner = new Scanner(System.in);

        System.out.println("请输入成绩");
        int score = scanner.nextInt();

        if (score>60)
            System.out.println("及格");
        else 
            System.out.println("不及格");
        

        scanner.close();
    

  • if多选择结构

语法:

if(布尔表达式1)
    //如果布尔表达式 1的值为true执行代码
else if(布尔表达式2)
    //如果布尔表达式 2的值为true执行代码
else if(布尔表达式3)
    //如果布尔表达式 3的值为true执行代码
else
    //如果以上布尔表达式都不为true执行代码

一个满足,整个程序结束

例如:

if (score<60)
            System.out.println("E");
        else if (score>=60 && score<70)
            System.out.println("D");
        else if (score>=70 && score<80)
            System.out.println("C");
        else if (score>=80 && score<90)
            System.out.println("B");
        else System.out.println("A");
  • 嵌套的if结构

语法:

if(布尔表达式)
    //如果布尔表达式1的值为true执行代码
    if(布尔表达式2)
        //如果布尔表达式2的值为true执行代码
    

switch多选择结构

  • 多选择结构switch case

  • switch case语句判断一个变量与一系列值中的某个值是否相等,每个值为一个分支

  • switch语句中的变量类型可以是:

    • byte、short、int或者char
    • 从java SE 7开始
    • switch支持字符串String类型了
    • 同时case标签必须为字符串常量或字面量
switch(expression)
    case value:
        //语句
        break;//可选
    case value:
        //语句
        break;//可选
    //可以有任意数量的case语句
    default://可选
        //语句

case穿透现象:如果没有break,则会执行后面所有语句

switch示例:

package structure;

import java.util.Scanner;

public class Demo03 
    public static void main(String[] args) 

        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入成绩");
        int grade = scanner.nextInt();

        switch (grade)
            case 100:
                System.out.println("优秀");break;
            case 90:
                System.out.println("良好");break;
            case 80:
                System.out.println("中等");break;
            case 70:
                System.out.println("及格");break;
            case 60:
                System.out.println("挂科");break;
            default:
                System.out.println("未知等级");
        
    

反编译 java—class(字节码文件)—反编译(IDEA):

在项目结构中,我们找到class文件:

然后在文件夹中打开java文件,把class文件拖过去:

对照java文件与其class文件,可知程序在字节码里是怎样真正运行的:

循环结构

  • while循环
  • do…while循环
  • for循环
  • 在java5中引入了一种主要用于数组的增强型for循环

while循环

while(布尔表达式)
    //循环内容

  • 只要布尔表达式为true,循环就会一直执行

用法示例:

package structure;

public class Demo04 
    public static void main(String[] args) 
        int i = 0;
        while (i<100)
            i++;
            System.out.println(i);
        
    

会输出1~100

1~100求和:

package structure;

public class Demo04 
    public static void main(String[] args) 
        int i = 0;
        int sum = 0;
        while (i<100)
            i++;
            sum+=i;
        System.out.println(sum);
    

do…while循环

  • 对于while,如果不满足条件,则不能进入循环。
  • 对于do…while,即使条件不满足,至少执行一次
do
    //代码
while(布尔表达式);

for循环

for(初始化;布尔表达式;更新)
    //代码语句

简化1~100求和:

package structure;

public class Demo04 
    public static void main(String[] args) 
        int i;
        int sum = 0;
        for (i=1;i<=100;i++)
            sum+=i;
        System.out.println(sum);
    

像for(int i=1;i<100;i++)这种语句可以用快捷键100.for生成

分号中的值可以去掉,具体与C语言类似

计算0到100之间奇数与偶数的和:

package structure;

public class Demo04 
    public static void main(String[] args) 
        int oddsum = 0;
        int evensum = 0;

        for (int i = 0; i <= 100; i++) 
            if (i%2==0)
                evensum+=i;
            else 
                oddsum+=i;
            
        System.out.println("奇数的和:"+oddsum);
         System.out.println("偶数的和:"+evensum);
    

输出1~1000之间能被5整除的数,每行输出3个

package structure;

public class Demo04 
    public static void main(String[] args) 
        for (int i = 0; i <= 1000; i++) 
            if (i%5==0)
                System.out.print(i+"\\t");
            
            if (i%(5*3)==0)
                System.out.println("\\n");
            
        
    

//println输出完全换行
//print输出完不会换行

打印99乘法表

package structure;

public class Demo04 
    public static void main(String[] args) 
        for (int j = 1; j < 10; j++) 
            for (int i = 1; i <= j; i++) 
                System.out.print(j+"*"+i+"="+(j*i)+"\\t");
            
            System.out.println();
        
    

增强for循环

  • 用于数组或集合的增强型for循环
for(声明语句:表达式)
    //代码

  • 声明语句:声明新的局部变量,该变量的类型必须与数组元素的类型匹配。其作用域限定在循环语句块,其值与此时数组元素的值相等。

  • 表达式:要访问的数组名,或者返回值为数组的方法

我们先直接来看一个例子:

package structure;

public class Demo05 
    public static void main(String[] args) 
        int[] numbers = 1,2,3,4,5;
        for (int x:numbers)
            System.out.print(" "+x);
        
    

//输出值: 1 2 3 4 5

相当于遍历数组元素的一种简便方法

for(int i=0;i<5;i++)

是一样效果的

break continue

  • break在任何循环语句的主体部分,均可用break控制循环的流程,break用于强行退出循环,不执行循环中剩余的语句
  • continue用于终止某次循环过程,跳过循环体中尚未执行的语句,接着进行下一步是否进行循环的判定

break前面有,这边就写一个continue的例子:输出1~30内所有的奇数:

package structure;

public class Demo06 
    public static void main(String[] args) 
        for (int i = 0; i < 30; i++) 
            if (i%2==0)
                System.out.print(" ");
                continue;
            System.out.print(i);
        
    
//输出 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29

关于goto关键字与标签

  • goto很老的用法,不推荐使用

标签用法:标签可以放在循环语句之前。我们希望在其中嵌套另一个循环,由于break和continue通常只能中断当前循环,但若随标签使用,它们就会中断到存在标签的地方。

输出0到100之间的质数:

package structure;

public class Demo07 
    public static void main(String[] args) 
        int count = 0;
        outer:for (int i=2;i<=100;i++)
            for (int j=2;j<i;j++)
                if (i % j == 0)
                    continue outer;
                
            System.out.print(" "+i);
        
    
//输出 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97

循环综合实例:打印三角形

package structure;

public class Demo08 
    public static void main(String[] args) 
        //打印5行三角形
        for (int i = 1; i <= 5; i++) 
            for (int j = 5; j >=i ; j--) 
                System.out.print(" ");
            
            for (int j = 1; j <=i ; j++) 
                System.out.print("*");
            
            for (int j = 1; j < i; j++) 
                System.out.print("*");
            
            System.out.println();
        
    
/*输出
     *
    ***
   *****
  *******
 *********
 */

以上是关于java入门09--循环与分支的主要内容,如果未能解决你的问题,请参考以下文章

educoder(头歌)平台Java实训作业答案

Go语言入门教程系列——函数循环与分支

Go语言入门教程系列——函数循环与分支

⭐️JavaSE系列⭐️Java程序的选择与轮回——分支结构与循环结构

博客总结(导航)

java入门学习—循环,选择,基础算法,API概念