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

news2025/1/18 10:07:08

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方法中");
	}
}

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

iperf3 网络测试

iperf3 测试网络的上下行带宽 下载地址 https://iperf.fr/iperf-download.php 开启服务器 开启客户端 常用命令 -c 代表客户端-s 代表服务端-u 代表 udp-r 代表数据方向是否反向 https://baijiahao.baidu.com/s?id1731514357681464971&wfrspider&forpc

c语言-操作符详解(含优先级与结合性)

文章目录 了解什么是操作数、操作符操作数&#xff1a;操作符 操作符详解&#xff1a;1.算术操作符&#xff1a; 、- 、* 、/ 、%2.移位操作符: << >>3.位操作符: & | ^4. 赋值操作符: 、 、 - 、 * 、 / 、% 、<< 、>> 、& 、| 、^5. 单⽬操…

移动机器人,开启智能柔性制造新篇章

智能制造是当今工业发展的必然趋势&#xff0c;而柔性制造则是智能制造的重要组成部分。在这个快速变革的时代&#xff0c;如何提高生产效率、降低成本、增强灵活性成为了制造业的关键挑战。富唯智能移动机器人应运而生&#xff0c;为柔性制造注入了新的活力。 基于富唯智能AI-…

xss-labs靶场6-10关

文章目录 前言一、靶场6-10关1、关卡62、关卡73、关卡84、关卡95、关卡10 总结 前言 此文章只用于学习和反思巩固xss攻击知识&#xff0c;禁止用于做非法攻击。注意靶场是可以练习的平台&#xff0c;不能随意去尚未授权的网站做渗透测试&#xff01;&#xff01;&#xff01; …

xilinx zynq平台 elf文件到bin文件格式转化

在嵌入式实际开发过程中&#xff0c;因为系统资源有限&#xff0c;需要尽可能的节省资源&#xff0c;尤其是flash资源。在某些场景下&#xff0c;需要直接执行占用内存较小的bin文件&#xff0c;而非elf文件。但xilinx SDK编译的输出文件一般为elf文件&#xff0c;所以需要进行…

国际版Amazon Lightsail的功能解析

Amazon Lightsail是一项易于使用的云服务,可为您提供部署应用程序或网站所需的一切,从而实现经济高效且易于理解的月度计划。它是部署简单的工作负载、网站或开始使用亚马逊云科技的理想选择。 作为 AWS 免费套餐的一部分&#xff0c;可以免费开始使用 Amazon Lightsail。注册…

【Delphi】使用TWebBrowser执行JavaScript命令传入JSON参数执行出错解决方案

目录 一、问题背景&#xff1a; 二、实际示例&#xff1a; 三、解决方案&#xff1a; 1. Delphi 代码&#xff1a; 2. javaScript代码&#xff1a; 一、问题背景&#xff1a; 在用Delphi开发程序&#xff0c;无论是移动端还是PC端&#xff0c;都可以很方便的使用TWebBrows…

LongAccumulator

原子操作之LongAccumulator 和LongAdder的区别在于&#xff0c;LongAdder是在Cell里面只能做加减操作&#xff0c;不能乘除&#xff0c;而LongAccumulator就可以定义乘除操作。原理和LongAdder都是一样的&#xff0c;一个Base和一个Cells数组。 原文跳转地址

Java游戏之飞翔的小鸟

前言 飞翔的小鸟 小游戏 可以作为 java入门阶段的收尾作品 &#xff1b; 需要掌握 面向对象的使用以及了解 多线程&#xff0c;IO流&#xff0c;异常处理&#xff0c;一些java基础等相关知识。一 、游戏分析 1. 分析游戏逻辑 &#xff08;1&#xff09;先让窗口显示出来&#x…

51单片机按键控制LED灯亮灭的N个玩法

51单片机按键控制LED灯亮灭的N个玩法 1.概述 这篇文章介绍按键的使用&#xff0c;以及通过控制LED灯的小实验&#xff0c;发现按键中存在的问题&#xff0c;然后思考并解决这些问题。达到熟练使用按键控制元器件。 2.搭建硬件环境 1.硬件准备 名称型号数量单片机STC12C205…

【办公常识】写好的代码如何上传?使用svn commit

首先找到对应的目录 找到文件之后点击SVN Commit

如何做好项目管理?年薪百万项目大佬一直在用这11张图

大家好&#xff0c;我是老原。 日常工作中&#xff0c;我们会遇到各种大大小小的工作项目&#xff0c;如何能让项目保质保量的完成&#xff0c;是我们项目经理的目标。 项目管理的流程可以说是由一系列的子过程组成的&#xff0c;它是一个循序渐进的过程&#xff0c;所以不能…

排序算法-----快速排序(非递归实现)

目录 前言 快速排序 基本思路 非递归代码实现 前言 很久没跟新数据结构与算法这一栏了&#xff0c;因为数据结构与算法基本上都发布完了&#xff0c;哈哈&#xff0c;那今天我就把前面排序算法那一块的快速排序完善一下&#xff0c;前面只发布了快速排序递归算法&#xff0c;…

智能合约安全漏洞与解决方案

// SPDX-License-Identifier: MIT pragma solidity ^0.7.0;import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/release-v3.3/contracts/math/SafeMath.sol";/*智能合约安全在智能合约中安全问题是一个头等大事&#xff0c;因为智能合约不像其他语…

LeetCode 2304. 网格中的最小路径代价:DP

【LetMeFly】2304.网格中的最小路径代价&#xff1a;DP 力扣题目链接&#xff1a;https://leetcode.cn/problems/minimum-path-cost-in-a-grid/ 给你一个下标从 0 开始的整数矩阵 grid &#xff0c;矩阵大小为 m x n &#xff0c;由从 0 到 m * n - 1 的不同整数组成。你可以…

网工内推 | 合资公司网工,CCNP/HCIP认证优先,朝九晚六

01 中企网络通信技术有限公司 招聘岗位&#xff1a;网络工程师 职责描述&#xff1a; 1、按照工作流程和指引监控网络运行情况和客户连接状况&#xff1b; 2、确保各监控系统能正常运作&#xff1b; 3、快速响应各个网络告警事件&#xff1b; 4、判断出网络故障&#xff0c;按…

【LeetCode刷题】--39.组合总和

39.组合总和 本题详解&#xff1a;回溯算法剪枝 class Solution {public List<List<Integer>> combinationSum(int[] candidates, int target) {int len candidates.length;List<List<Integer>> res new ArrayList<>();if (len 0) {return r…

栈和队列【详解】

目录 一、栈 1.栈的定义 2.栈的初始化 3.入栈 4.出栈 5.获取栈顶元素 6.获取栈元素的个数 7.判断栈是否为空 8.销毁栈 二、队列 1.队列的定义 2.入队 3.出队 4.获取队头元素 5.获取队尾元素 6.判断队列是否为空 7.获取队列的元素个数 8.销毁队列 前言&#xf…

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

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

pycurl>=7.43.0.5机器学习环境配置问题

去官网下载对应版本.whl文件&#xff0c;注意使用python --version提前查看 python版本信息和64bit还是32bit,下载对应版本。 cd 到该路径下&#xff0c;并pip。6