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");
		else
			System.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("信用一般");
		else
			System.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("进入女子组");
			else
				System.out.println("性别输入有误");
		else
			System.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方法中");
	}
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/177862.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

linux之进程地址空间

文章目录 1.进程地址空间回顾1.1进程地址空间划分1.2验证进程地址空间划分1.简单划分2.完整划分 2.初探进程地址空间2.1初看现象2.2Makefile的简便写法 3.进程地址空间详解3.1地址空间是什么?3.2地址空间的设计/由来3.3空间区域划分3.4如何理解地址空间?3.5解释3.2的&#x1…

在中国企业出海的大浪潮下,亚马逊云科技提供遍及全球的基础设施和技术支持

中国技术出海是中国企业更高层次更高质量的全球化。在人类文明发展史上&#xff0c;凝聚中国古人智慧结晶的造纸术、印刷术、火药、指南针等&#xff0c;曾为中国技术出海写下过浓墨重彩的一笔。在今天&#xff0c;如金山办公、店匠科技、ADVANCE.AI等公司又以技术立业&#xf…

最受欢迎的猫罐头有那些?精选的5款热门猫罐头推荐!

新手养猫很容易陷入疯狂购买的模式&#xff0c;但有些品牌真的不能乱买&#xff01;现在的大环境不太好&#xff0c;我们需要学会控制自己的消费欲望&#xff0c;把钱花在刀刃上&#xff01;现在宠物市场真的很内卷&#xff0c;很多品牌都在比拼产品的数据和营养成分。很多铲屎…

如何查找批量企业的联系方式?

​我们都知道&#xff0c;企业的联系方式在企业的年报中就能找到&#xff0c;但是年报上的电话真的是你要找的吗&#xff1f; 很多企业年报上留的是第三方代记账公司&#xff0c;或者是其他没用的号码&#xff0c;这对于做B端业务的企业来说是不够精准的。 市面上有很多做企业…

redis运维(十六) 有序集合

一 有序集合 把握一点&#xff1a; 各种redis 命令都提供各种语言对应的API 接口,后续API是关键 ① 概念 1、sorted set --> 有序集合2、redis有序集合也是集合类型的一部分&#xff0c;所以它保留了集合中元素不能重复的特性3、但是不同的是,有序集合给每个元素多设置…

[Docker]九.Docker compose讲解

docker-compose 是 docker 官方的一个开源项目&#xff0c;可以实现对 docker 容器集群的快速编排, docker-compose 通过一个 配置文件 来管理多个 Docker 容器,在配置文件中&#xff0c;所有的容器通过 services 来定义&#xff0c;然后使用 docker-compose脚本 来 启动&am…

10、信息打点——APP小程序篇抓包封包XP框架反编译资产提取

APP信息搜集思路 外在——抓包封包——资产安全测试 抓包&#xff08;Fiddle&茶杯&burp&#xff09;封包&#xff08;封包监听工具&#xff09;&#xff0c;提取资源信息 资产收集——资源提取——ICO、MAD、hash——FOFA等网络测绘进行资产搜集 外在——功能逻辑 内在…

pikachu靶场PHP反序列化漏洞

pikachu靶场PHP反序列化漏洞 源码分析 查看源代码 class S{var $test "pikachu";function __construct(){echo $this->test;} }// O:1:"S":1:{s:4:"test";s:29:"<script>alert(xss)</script>";} $html; if(isset($_PO…

pikachu_php反序列化

pikachu_php反序列化 源代码 class S{var $test "pikachu";function __construct(){echo $this->test;} }//O:1:"S":1:{s:4:"test";s:29:"<script>alert(xss)</script>";} $html; if(isset($_POST[o])){$s $_POST[…

优先级队列(priority_queue)

文章目录 优先级队列的定义定义&#xff1a;接口头文件优先队列和堆的关系使用&#xff1a;排序的规则容器 仿函数应用 队列存指针问题&#xff1a; 优先级队列的定义 定义&#xff1a; 黄色部分是仿函数 接口 头文件 这里不需要包含其他的头文件只需要使用队列的头文件就可以…

SpringBoot监听器解析

监听器模式介绍 监听器模式的要素 事件监听器广播器触发机制 SpringBoot监听器实现 系统事件 事件发送顺序 监听器注册 监听器注册和初始化器注册流程类似 监听器触发机制 获取监听器列表核心流程: 通用触发条件: 自定义监听器实现 实现方式1 实现监听器接口: Order(1) …

SPSS系统聚类

前言&#xff1a; 本专栏参考教材为《SPSS22.0从入门到精通》&#xff0c;由于软件版本原因&#xff0c;部分内容有所改变&#xff0c;为适应软件版本的变化&#xff0c;特此创作此专栏便于大家学习。本专栏使用软件为&#xff1a;SPSS25.0 本专栏所有的数据文件请点击此链接下…

基于python人脸性别年龄检测系统-深度学习项目

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介简介技术组成1. OpenCV2. Dlib3. TensorFlow 和 Keras 功能流程 二、功能三、系统四. 总结 一项目简介 # Python 人脸性别年龄检测系统介绍 简介 该系统基…

VirtualBox配置共享文件夹,如果你一直安装增强功能失败,又没有尝试过改内核版本。。。

1 背景 想设置电脑本地和virtualbox虚拟机之间的共享文件夹&#xff0c;这样在电脑本地对共享文件的修改&#xff0c;就可以在虚拟机中被感知。 如果想配置共享文件夹&#xff0c;前提是必须安装virtualbox的增强功能。 我的虚拟机是7.0.10版本 安装的centOS8.5 可以看我之前的…

一篇文章搞懂WPF动画的使用技巧

WPF 动画系统提供了丰富的功能&#xff0c;用于为 UI 元素创建流畅的动态效果。动画可以应用于任何可用于渲染的属性&#xff0c;比如位置、颜色、大小等。在 WPF 中&#xff0c;动画是通过更改随时间变化的属性来实现的。 WPF动画基本用法 例如实现如下的动画效果&#xff1…

Kubernetes+Gitlab+Jenkins+ArgoCD多集群部署

KubernetesGitlabJenkinsArgoCD多集群部署 文章目录 KubernetesGitlabJenkinsArgoCD多集群部署1. KubernetesGitlabJenkinsArgoCD多集群部署2. 添加WebHooks自动触发3. Jenkins-构建-执行Shell4. 制作镜像及修改Yaml文件4.1 Dockerfile4.2 Build-Shell 5.自动部署Demo测试5.1 推…

基于跳蛛算法优化概率神经网络PNN的分类预测 - 附代码

基于跳蛛算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于跳蛛算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于跳蛛优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要&#xff1a;针对PNN神经网络的光滑…

三、防火墙-源NAT

学习防火墙之前&#xff0c;对路由交换应要有一定的认识 源NAT基本原理1.1.NAT No-PAT1.2.NAPT1.3.出接口地址方式&#xff08;Easy IP&#xff09;1.4.Smart NAT1.5.三元组 NAT1.6.多出口场景下的源NAT 总结延伸 ——————————————————————————————…

基于单片机直流电机调速(proteus仿真+源程序)

一、系统方案 1、本设计采用这51单片机作为主控器。 2、转速值送到液晶1602显示。 3、按键设加减速&#xff0c;开始暂停、正反转。 二、硬件设计 原理图如下&#xff1a; 三、单片机软件设计 1、首先是系统初始化 en0; rw0; write_com(0x01); //lcd初始化 write_com(0x38)…

蓝桥杯算法双周赛心得——迷宫逃脱(记忆化搜索)

大家好&#xff0c;我是晴天学长&#xff0c;非常经典实用的记忆化搜索题&#xff0c;当然也可以用dp做&#xff0c;我也会发dp的题解&#xff0c;需要的小伙伴可以关注支持一下哦&#xff01;后续会继续更新的。&#x1f4aa;&#x1f4aa;&#x1f4aa; 1) .迷宫逃脱 迷官逃脱…