Java基础(程序控制结构篇)

2023-11-23 05:20

本文主要是介绍Java基础(程序控制结构篇),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Java的程序控制结构与C语言一致,分为顺序结构、选择结构(分支结构)和循环结构三种。

一、顺序结构

如果程序不包含选择结构或是循环结构,那么程序中的语句就是顺序的逐条执行,这就是顺序结构。

import java.util.Scanner;
public class SequenceConstruct{public static void main(String[] args){//以下就使程序的顺序结构//语句是从上到下逐个执行的,没有跳转int a = 10;char b = 'a';double c = 1.23;String str = "";Scanner scanner = new Scanner(System.in);System.out.print("请输入一句话:");str = scanner.next();System.out.println(str);}}

二、选择结构

1. if-else

在if-else分支结构中,else会与上方最近的if匹配。

1.1 单分支

在这里插入图片描述

//单分支
import java.util.Scanner;
public class SelectConstruct01{public static void main(String[] args){String str = "";System.out.println("请输入一个名字:");Scanner scanner = new Scanner(System.in);str = scanner.next();if("jack".equals(str))System.out.println("你输入的名字是jack");}}

在这里插入图片描述

1.2 双分支

import java.util.Scanner;public class SelectConstruct02{public static void main(String[] args){//双分支//System.out.print("请输入你的名字:");Scanner scanner = new Scanner(System.in);String name = scanner.next();if("jack".equals(name))System.out.println("你的名字是jack");elseSystem.out.println("你的名字不是jack");}}

在这里插入图片描述

1.3 多分支

在这里插入图片描述

import java.util.Scanner;public class SelectConstruct03{public static void main(String[] args){//多分支//输入保国同志的芝麻信用分:// 如果:// 1) 信用分为 100 分时,输出 信用极好;// 2) 信用分为(80,99]时,输出 信用优秀;// 韩顺平循序渐进学 Java 零基础// 第 100页// 3) 信用分为[60,80]时,输出 信用一般;// 4) 其它情况 ,输出 信用 不及格// 5) 请从键盘输入保国的芝麻信用分,并加以判断Scanner scanner = new Scanner(System.in);System.out.println("请输入信用分:");int score = scanner.nextInt();if(score > 100 || score < 0)System.out.println("信用分输入有误!");else if(score == 100)System.out.println("信用极好");else if(score > 80)System.out.println("信用优秀");else if(score >= 60)System.out.println("信用一般");elseSystem.out.println("信用不及格");}}

在这里插入图片描述

1.4 嵌套分支

在这里插入图片描述

import java.util.Scanner;public class SelectConstruct04{public static void main(String[] args){//嵌套分支//在一个分支结构中嵌套了另一个分支结构//参加歌手比赛,如果初赛成绩大于 8.0 进入决赛,否则提示淘汰。//并且根据性别提示进入男子组或女子组。Scanner scanner = new Scanner(System.in);System.out.print("请输入初赛成绩:");double score = scanner.nextDouble();System.out.print("请输入性别:");char sex = scanner.next().charAt(0);if(score > 8.0)if(sex == '男')System.out.println("进入男子组");else if(sex == '女')System.out.println("进入女子组");elseSystem.out.println("性别输入有误");elseSystem.out.println("淘汰");}}

在这里插入图片描述

2. switch

  • switch括号中的表达式结果类型必须是(byte,short,int,char,enum,String)中的一种。
  • case后的常量类型必须与switch括号中表达式结果的类型一致,或是可以自动转换(switch括号中的类型转换成case关键字后的类型)成可以比较的类型。
  • case后必须是常量,不能是变量。
  • default是可选的。
  • break用于跳出当前switch语句块,如果没有break关键字,那么就会发生穿透,语句会一直执行到switch语句块的末尾或是遇到break。
    在这里插入图片描述
import java.util.Scanner;
public class SwitchStructrue{public static void main(String[] args){Scanner scanner = new Scanner(System.in);boolean flag = true;while(flag){System.out.println("输入1表示退出循环:");if(scanner.nextInt() == 1){flag = false;continue;}System.out.print("输入一个字符(a-g):");char input = scanner.next().charAt(0);switch(input){case 'a':System.out.println("Monday");break;case 'b':System.out.println("Tuesday");break;case 'c':System.out.println("Wensday");break;case 'd':System.out.println("Thursday");break;case 'e':System.out.println("Friday");break;case 'f':System.out.println("Saturday");break;case 'g':System.out.println("Sunday");break;default:System.out.println("error,please input again");}	}	}
}

在这里插入图片描述

3. switch与if-else的比较

  • 如果判断的数值不多,并且是固定不变的,例如星期、月份等内容,推荐使用switch。
  • 对区间的判断,结果为boolean类型的判断等,使用if-else。

三、循环结构

1. for循环

for循环的结构:for(循环变量初始化;循环条件;循环变量迭代){循环体}.可以一次性初始化多个变量(用逗号隔开),但是它们的类型要一致,循环变量的迭代处也可以有多条语句(用逗号隔开)。
在这里插入图片描述

public class ForStructrue{public static void main(String[] args){for(int i = 1; i <= 9; i++){for(int j = 1; j <= i; j++){String str = j + "*" + i + " = " +  i * j;System.out.print(str + "  ");}System.out.println();}}
}

在这里插入图片描述

2. while循环

while循环的结构:while(循环条件){循环体}.
在这里插入图片描述

public class WhileStructrue{public static void main(String[] rags){int i = 1, j = 1;while(i <= 9){j = 1;while(j <= i){System.out.print(j+"*"+i+"="+i*j+"  ");j++;}System.out.println();i++;}}
}

在这里插入图片描述

3. dowhile循环

dowhile循环与while循环基本一样,除了当初始条件不满足时,dowhile会执行一次,而while一次都不会执行。注意while括号后有分号。
在这里插入图片描述

public class DoWhileStructrue{public static void main(String[] args){boolean flag = false;while(flag){System.out.println("This is while");}do{System.out.println("This is dowhile");}while(flag);}
}

在这里插入图片描述

4. 多重循环

多重循环就是一层循环为另一个循环的循环体,打印乘法表就需要使用多重循环来完成,下面使用多重循环打印金字塔。

import java.util.Scanner;
public class MulCirculation{public static void main(String[] args){System.out.println("输入要打印的金字塔规模:");Scanner scanner = new Scanner(System.in);int num = scanner.nextInt();for(int i = 1; i <= num; i++){int j = 0;while(j < num - i){System.out.print(" ");j++;}for(j = 0; j < 2 * i - 1; j++){System.out.print("*");}System.out.println();}}
}

在这里插入图片描述

5. break关键字

用于跳出当前层循环语句或跳出switch语句块。可以使用标签来指定跳出哪一层循环(尽量不要使用标签)。

public class BreakTest{public static void main(String[] args){for(int i = 1; i <= 100; i++){if(i == 49) break;System.out.print(i + " ");}System.out.println();for(int i = 1; i <= 5; i++){for(int j = 1; j <= 5; j++){if(j == i) break;System.out.print(i*j+" ");}System.out.println();}circulation1:for(int i = 1; i <= 10; i++){circulation2:for(int j = 1; j <= 3; j++){circulation3:for(int k = 1; k <= 3; k++){if(i == 1){break circulation2;}System.out.println("i = " + i + " j = " + j + " k = " + k);if(i == 3) break circulation1;}}}}
}

在这里插入图片描述

6. continue关键字

用于跳过本次迭代时continue关键字之后的所有语句,并进行下一次迭代,但不会跳过for循环中循环变量的迭代语句。可以使用标签指定层次。

public class ContinueTest{public static void main(String[] args){for(int i = 1; i <= 3; i++){for(int j = 1; j <= 3; j++){if(i == j) continue;System.out.print("i = " + i + " j = " + j + "  ");}System.out.println();}circulation1:for(int i = 1; i <= 3; i++){circulation2:for(int j = 1; j <= 3; j++){circulation3:for(int k = 1; k <= 3; k++){if(i == 2) continue circulation1;if(j == 1) continue circulation2;System.out.print("i = " + i + " j = " + j + " k = " + k + "  ");}System.out.println();}}}
}

在这里插入图片描述

7. return关键字

return关键字用于跳出所在方法。

public class ReturnTest{public static void main(String[] args){int i = 1;while(i <= 10){if(i == 6) return;System.out.println("i = " + i++);}System.out.println("在main方法中");}
}

在这里插入图片描述

这篇关于Java基础(程序控制结构篇)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/415635

相关文章

springboot控制bean的创建顺序

《springboot控制bean的创建顺序》本文主要介绍了spring-boot控制bean的创建顺序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随... 目录1、order注解(不一定有效)2、dependsOn注解(有效)3、提前将bean注册为Bea

Java中的ConcurrentBitSet使用小结

《Java中的ConcurrentBitSet使用小结》本文主要介绍了Java中的ConcurrentBitSet使用小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、核心澄清:Java标准库无内置ConcurrentBitSet二、推荐方案:Eclipse

java中的Supplier接口解析

《java中的Supplier接口解析》Java8引入的Supplier接口是一个无参数函数式接口,通过get()方法延迟计算结果,它适用于按需生成场景,下面就来介绍一下如何使用,感兴趣的可以了解一下... 目录1. 接口定义与核心方法2. 典型使用场景场景1:延迟初始化(Lazy Initializati

Go语言结构体标签(Tag)的使用小结

《Go语言结构体标签(Tag)的使用小结》结构体标签Tag是Go语言中附加在结构体字段后的元数据字符串,用于提供额外的属性信息,这些信息可以通过反射在运行时读取和解析,下面就来详细的介绍一下Tag的使... 目录什么是结构体标签?基本语法常见的标签用途1.jsON 序列化/反序列化(最常用)2.数据库操作(

Java中ScopeValue的使用小结

《Java中ScopeValue的使用小结》Java21引入的ScopedValue是一种作用域内共享不可变数据的预览API,本文就来详细介绍一下Java中ScopeValue的使用小结,感兴趣的可以... 目录一、Java ScopedValue(作用域值)详解1. 定义与背景2. 核心特性3. 使用方法

spring中Interceptor的使用小结

《spring中Interceptor的使用小结》SpringInterceptor是SpringMVC提供的一种机制,用于在请求处理的不同阶段插入自定义逻辑,通过实现HandlerIntercept... 目录一、Interceptor 的核心概念二、Interceptor 的创建与配置三、拦截器的执行顺

Java中Map的五种遍历方式实现与对比

《Java中Map的五种遍历方式实现与对比》其实Map遍历藏着多种玩法,有的优雅简洁,有的性能拉满,今天咱们盘一盘这些进阶偏基础的遍历方式,告别重复又臃肿的代码,感兴趣的小伙伴可以了解下... 目录一、先搞懂:Map遍历的核心目标二、几种遍历方式的对比1. 传统EntrySet遍历(最通用)2. Lambd

Spring Boot 中 RestTemplate 的核心用法指南

《SpringBoot中RestTemplate的核心用法指南》本文详细介绍了RestTemplate的使用,包括基础用法、进阶配置技巧、实战案例以及最佳实践建议,通过一个腾讯地图路线规划的案... 目录一、环境准备二、基础用法全解析1. GET 请求的三种姿势2. POST 请求深度实践三、进阶配置技巧1

springboot+redis实现订单过期(超时取消)功能的方法详解

《springboot+redis实现订单过期(超时取消)功能的方法详解》在SpringBoot中使用Redis实现订单过期(超时取消)功能,有多种成熟方案,本文为大家整理了几个详细方法,文中的示例代... 目录一、Redis键过期回调方案(推荐)1. 配置Redis监听器2. 监听键过期事件3. Redi

Spring Boot 处理带文件表单的方式汇总

《SpringBoot处理带文件表单的方式汇总》本文详细介绍了六种处理文件上传的方式,包括@RequestParam、@RequestPart、@ModelAttribute、@ModelAttr... 目录方式 1:@RequestParam接收文件后端代码前端代码特点方式 2:@RequestPart接