流程控制 JAVA语言基础

news2024/12/28 18:55:47

任何简单或复杂的算法都可以由三种基本结构组成:顺序结构,选择结构,循环结构。

顺序结构

比较一般的结构,程序从上到下执行。

选择结构

我们从最简单的单路选择开始,符合条件的进入语句序列,不符合条件的跳出执行接下来的代码。倘若我们不符合条件的要进行的操作是要和接下来的代码不一样,那么我们就用else来进行接下来的语句块。表示不符合条件的其他情况所进入的语句序列。那么这样的话我们就能延伸出其他情况了,若不符合“其他”又不想进入接下来的语句序列,我们又该如何?显然,我们用到的是多重条件选择结构。

例子:从键盘上输入一个月份,判断该月份的天数。

import java.util.Scanner;//使用Scanner方法实现输入
public class App {
    public static void main(String[] args) throws Exception {
        int month, days;
        Scanner sc = new Scanner(System.in);
        System.out.print("month number:");
        month = sc.nextInt();
        switch (month) {
            case 2:
                days = 28;
                break;
            case 4:
            case 6:
            case 8:
            case 10:
            case 12:
                days = 30;
                break;
            default:
                days = 31;
                break;
        }
        sc.close();
        System.out.println(month + " month has " + days + " days");
    }
}

从键盘上输入从键盘上输入一个月份,判断该月份的天数(假设不是闰年)一个月份,判断该月份的天数(假设不是闰年)

循环结构

for循环,表达式一为初始表达式,条件表达式判断是否进入循环体为限制条件,表达式二一般是对表达式的变量进行改变,从而让其靠近限制条件。

while循环,循环比较简单,条件表达式内若判断为ture则进入循环,若为false则退出循环。

循环例子:从键盘上输入一个数,判断该数是否是斐波那契数列中的数。

首先斐波那契数列的规律是后一个数是前两个数的和,我们能用循环的方法构造此规律。

import java.io.*;//这里我们使用bufferedReader方法读取
public class App {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        System.out.print("Please input a number:");
        int input = Integer.parseInt(br.readLine());
        int a = 0, b = 1;
        while (a < input) {
            int newA = b;
            b = a + b;
            a = newA;
        }
        if (a == input) {
            System.out.println(input + " is right");
        } else {
            System.out.println(input + " isn't the number0");
        }
    }
}

从键盘上输入一个数,判断该数是否是Fibonacci序列中的数

do-while循环结构,先执行do中语句,再判断while,与while区别是do-while一定会执行一遍循环体。

public class App {
    public static void main(String[] args) {
        int sum = 0;
        for (int a = 2; a <= 100; a++) {
            boolean tag = true;// tag要定义在循环体内,大家可以想一下若定义在循环体外答案还对吗?
            for (int b = 2; b <= Math.sqrt(a); b++) {// 适当减枝
                if (a % b == 0) {
                    tag = false;
                }
            }
            if (tag) {
                sum++;
            }
        }
        System.out.println(sum);
    }
}

循环语句中的跳转语句

break 语句

使程序的流程从一个语句块(switch或循环结构)内跳出;

break ;

continue 语句

终止当前轮次循环,进入下一轮循环 ;

continue ;

return 语句

用来使程序从方法(函数)中返回,并返回一个值。

return 返回值 ;

递归

递归(Recursion) 就是直接或间接调用自身的方法

要终止一个递归方法,问题必须达到一个终止条件(即递归边界)

当问题达到终止条件时就会将结果返回给调用者。然后调用者进行计算并将结果返回给它自己的调用者。这个过程持续进行,直到结果传回给原始的调用者为止。

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

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

相关文章

我打算修一段时间仙,望周知

1、大科学家牛顿也修过仙&#xff0c;虽然修的是西方的仙&#xff1b;我们东方人不信那个邪&#xff0c;有自己优秀的传统文化&#xff0c;我只修东方的仙&#xff1b;另外&#xff0c;作为普通凡人我成就和智慧都无法望牛顿老人家项背的普通人&#xff0c;即使现在暂时“修仙”…

Segment Routing IPv6简介

定义 SRv6&#xff08;Segment Routing IPv6&#xff0c;基于IPv6转发平面的段路由&#xff09;是基于源路由理念而设计的在网络上转发IPv6数据包的一种协议。SRv6通过在IPv6报文中插入一个路由扩展头SRH&#xff08;Segment Routing Header&#xff09;&#xff0c;在SRH中压…

案例分析篇08:Web架构设计相关20个考点(1~6)(2024年软考高级系统架构设计师冲刺知识点总结系列文章)

专栏系列文章推荐: 2024高级系统架构设计师备考资料(高频考点&真题&经验)https://blog.csdn.net/seeker1994/category_12593400.html 【历年案例分析真题考点汇总】与【专栏文章案例分析高频考点目录】(2024年软考高级系统架构设计师冲刺知识点总结-案例分析篇-…

电机参数辨识算法(2)——基于高频注入的磁链辨识策略

电机参数辨识算法&#xff08;1&#xff09;——基于高频注入的电感辨识策略-CSDN博客https://blog.csdn.net/m0_46903653/article/details/136722750?spm1001.2014.3001.5501上一期已经讲过了电感辨识方法。 今天这是参数辨识的第二期&#xff0c;今天来简单看看磁链的辨识。…

Simulink|局部遮荫下光伏组件多峰值PSO-MPPT控制

目录 主要内容 1.光伏电池工程数学模型的输出特性程序 2.普通扰动观察法进行MPPT 3.基于粒子群寻优的多峰输出特性 4.PSO_MPPT仿真模型 程序下载链接 主要内容 在实际的光伏发电系统中,由于环境多变等因素的影响,当局部出现被遮挡情况时光伏阵列的功率-电压(P-U)特…

【开源】SpringBoot框架开发房屋出售出租系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 房屋销售模块2.2 房屋出租模块2.3 预定意向模块2.4 交易订单模块 三、系统展示四、核心代码4.1 查询房屋求租单4.2 查询卖家的房屋求购单4.3 出租意向预定4.4 出租单支付4.5 查询买家房屋销售交易单 五、免责说明 一、摘…

【Python使用】python高级进阶知识md总结第4篇:静态Web服务器-命令行启动动态绑定端口号,html 的介绍【附代码文档】

python高级进阶全知识知识笔记总结完整教程&#xff08;附代码资料&#xff09;主要内容讲述&#xff1a;操作系统&#xff0c;虚拟机软件&#xff0c;Ubuntu操作系统&#xff0c;Linux内核及发行版&#xff0c;查看目录命令&#xff0c;切换目录命令&#xff0c;绝对路径和相对…

软件工程(Software Engineering)

一、软件工程概述 1.软件生存周期 软件&#xff1a; 包含程序、数据及相关文档 软件工程&#xff1a; 涉及到软件开发、维护、管理等多方面的原理、工具与环境。最终的目的是开发高质量的软件。 目的&#xff1a; 提高软件生产率、提高软件质量、降低软件成本。 文档的作用&…

数据链路层_以太网

IP协议确定数据跨网络从主机A到主机B的路径&#xff0c;即IP协议解决了路径选择问题&#xff0c;但在这之前&#xff0c;必须先解决数据在一个子网内的传输的问题。跨网络的本质就是跨多个子网&#xff0c;只要一个子网内可以通信&#xff0c;那么便可以跨网络通信。 一.以太…

【编程项目开源】拼图游戏(鸿蒙版)

目标 做个拼图游戏 效果 开发工具 下载DevEco Studio 工程截图 开源地址 https://gitee.com/lblbc/puzzle/tree/master/puzzle_hongmeng_arkUI 关于 厦门大学计算机专业|华为八年高级工程师 专注《零基础学编程系列》 http://lblbc.cn/blog 包含&#xff1a;Java | 安卓…

【类和对象】类的作用域 | 类的实例化 | 类对象模型 | this指针

目录 5.类的作用域 6.类的实例化 6.1成员的声明和定义 6.2实例化出的对象大小 7.类对象模型❗❗ 7.1如何计算类对象的大小 7.2类对象的存储方式猜测 7.3结构体内存对齐规则 7.3.1内存对齐 7.3.2大小端 8.this指针 8.1this指针的引出 8.2this指针的特性 C和C实…

面试官:volatile如何保证可见性的,具体如何实现?

写在开头 在之前的几篇博文中&#xff0c;我们都提到了 volatile 关键字&#xff0c;这个单词中文释义为&#xff1a;不稳定的&#xff0c;易挥发的&#xff0c;在Java中代表变量修饰符&#xff0c;用来修饰会被不同线程访问和修改的变量&#xff0c;对于方法&#xff0c;代码…

TortoiseSVN 报错:The server unexpectedly closed the connetion

前言 CentOS7Linux 安装subversionmod_dav_svn&#xff0c;搭建subversion(svn)服务器 The server unexpectedly closed the connetion 解决办法 重启Apache服务 shell> systemctl restart httpd

Day1-力扣刷题学习打卡

1、两数之和 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元素在答案里不能重复出现。 你可以…

如何理解Linux文件IO?

一、文件IO的概述 1、什么是文件&#xff1f; Linux下一切皆文件。普通文件、目录文件、管道文件、套接字文件、链接文件、字符设备文件、块设备文件。 2、什么是IO&#xff1f; input output&#xff1a;输入输出 3、什么是文件IO&#xff1f; 对文件的输入输出&#xff0c;把…

Transformers 直观解释——不仅是如何工作,而且为什么工作得这么好 (Ketan Doshi)

Transformers 直观解释——不仅是如何工作&#xff0c;而且为什么工作得这么好 Transformers Explained Visually — Not Just How, but Why They Work So WellHow does the input sequence reach the Attention module 输入序列如何到达Attention模块Each input row is a word…

条件队列大法好:wait和notify的基本语义

条件队列是我们常用的轻量级同步机制&#xff0c;也被称为“waitnotify”机制。但很多刚刚接触并发的朋友可能会对wait和notify的语义和配合过程感到迷惑。 今天从join()方法的实现切入&#xff0c;重点讲解wait()方法的语义&#xff0c;简略提及notify()与notifyAll()的语义&…

ubuntu安装docker的详细教程

检查卸载老版本docker ubuntu下自带了docker的库,不需要添加新的源。 但是ubuntu自带的docker版本太低,需要先卸载旧的再安装新的。 注:docker的旧版本不一定被称为docker,docker.io 或 docker-engine也有可能,所以卸载的命令为: sudo apt-get remove -y docker docke…

记录工作中莫名其妙的bug

1、问题&#xff1a;办公室的电脑突然除了我之外&#xff0c;都不能访问我们的线上系统了 原因&#xff1a;因为是内网&#xff0c;同事有刚刚升级了Windows11&#xff0c;配置的DNS被清了&#xff0c;还有同事换了公司的新电脑&#xff0c;还没有配DNS 位于&#xff1a;C /Win…

JVM虚拟机:通过jconsole远程连接解决JVM报错

本文重点 前面我们介绍过的一些工具都是使用命令行的方式来帮助我们完成&#xff0c;本文我们将使用一种图形化界面的方式来远程连接&#xff0c;然后完成关于JVM的检测任务。 jconsole jconsole是一个JVM的检测工具&#xff0c;这个工具任何安装了Java的电脑上都有的&#…