Java-day03(程序流程控制)

程序流程控制

1.顺序结构

程序从上至下逐行执行,无判断与跳转

public class Test1{       public static void main(String[] args){int i = 1;int j = i + 1; System.out.println(j);}
}

2.分支结构

依据条件,选择性执行某段语句
主要有以下两种

2.1 if…else语句

在这里插入图片描述

单判断

public class Test2{   public static void main(String[] args){int age = 26;if(age >= 18){System.out.println("你已经成年了!");}else{System.out.println("你还是未成年!");
}}
}

多判断

public class Test3{       public static void main(String[] args){int age = 26;if(age <18){System.out.println("你还是未成年!");}else if(age > 45){System.out.println("你是中老年人!");}else{System.out.println("你是青年人!");}}
}

优化:添加键盘输入

//1.导包
import java.util.Scanner;                  
public class Test4{public static void main(String[] args){//2.创建Scanner类的对象Scanner s = new Scanner(System.in);System.out.println("请输入你的年龄:  ");//3.调用此对象的方法next(字符串),nextInt(整型)int age = s.nextInt();if(age < 18){System.out.println("你还是未成年!");}else if(age > 45){System.out.println("你是中老年人!");}else{System.out.println("你是青年人!");}}
}

if…else分支结构测试
题目一
在这里插入图片描述

import java.util.Scanner;                      
public class Test5{public static void main(String[] args){Scanner s = new Scanner(System.in);System.out.println("请输入你的成绩:  ");int score = s.nextInt();if(score == 100){System.out.println("BMW车,你拿走!");}else if(80 < score && score <= 99){System.out.println("Iphone13,你拿走!");}else if(60 <= score && score <= 80){System.out.println("参考书,你拿走!");}else{System.out.println("什么都没有了!");}}
}

题目二
在这里插入图片描述

方法一:

import java.util.Scanner;             
public class Test {    public static void main(String[] args) {// 键盘输入三个数Scanner s = new Scanner(System.in);System.out.println("第一个数:  ");int num1 = s.nextInt();System.out.println("第二个数:  ");int num2 = s.nextInt();System.out.println("第三个数:  ");int num3 = s.nextInt();if(num1 > num2){if(num3 > num1)System.out.println("三个数从小到大排列:" + num2 +"," + num1 + "," + num3);else if(num3 < num2){System.out.println("三个数从小到大排列:" + num3 +"," + num2 + "," + num1);}elseSystem.out.println("三个数从小到大排列:" + num2 +"," + num3 + "," + num1);}else{if(num3 > num2){System.out.println("三个数从小到大排列:" + num1 +"," + num2 + "," + num3);}else if(num3 < num1){System.out.println("三个数从小到大排列:" + num3 +"," + num1 + "," + num2);}else{System.out.println("三个数从小到大排列:" + num1 +"," + num3 + "," + num2);}}}
}

方法二:

import java.util.Scanner;                
public class Test{public static void main(String[] args){//1.键盘输入三个数Scanner s = new Scanner(System.in);System.out.println("第一个数:  ");int num1 = s.nextInt();System.out.println("第二个数:  ");int num2 = s.nextInt();System.out.println("第三个数:  ");int num3 = s.nextInt();//2.判断第一个与第二个数的大小,让num2 > num1(如果num1>num2,值互换;反之就不变)if(num1 > num2){num1 = num1 ^ num2;num2 = num1 ^ num2;num1 = num1 ^ num2;}	//3.判断第三个数的大小(第二大,最小,最大)if(num2 >num3 && num3 > num1){num2 = num2 ^ num3;num3 = num2 ^ num3;num2 = num2 ^ num3;System.out.println("三个数从小到大排列:" + num1 +"," + num2 + "," + num3);}else if(num2 >num3 && num3 < num1){System.out.println("三个数从小到大排列:" + num3 +"," + num1 + "," + num2);}else{System.out.println("三个数从小到大排列:" + num1 +"," + num2 + "," + num3);	}}
}

注意

  1. 条件判断之间可以嵌套
    如果多个条件语句是互斥关系,多个条件语句上下顺序自由
    如果多个条件语句是包含关系,要求条件语句范围的要写范围大的上面
  2. 如果if中的执行语句只有一行,可以省略{},建议不要省略。

2.2 switch语句

在这里插入图片描述

  1. switch语句会根据表达式对应case去判断,满足就执行,每条case语句一定要加break,否则程序会继续执行下去
  2. case 常量:常量只能是值,不能是取值范围
  3. default:可选,位置灵活
  4. 常量可取char,byte,short,int,String(jdk1.7),枚举

switch分支结构测试
题目一
根据输入的月份,判断当前季节?

import java.util.Scanner;      
// 3,4,5,月为春天,6,7,8,月为夏天,9,10,11月为秋天,12,1,2月为冬天
public class Test {public static void main(String[] args) {Scanner s = new Scanner(System.in);System.out.println("请输入月份:  ");int age = s.nextInt();switch(age/3){case 1:System.out.println(age + "月是春天");break;case 2:System.out.println(age + "月是夏天");break;case 3:System.out.println(age + "月是秋天");break;default:System.out.println(age + "月是冬天");break;}}
}

题目二

根据键盘输入的月份与日期,判断是2023年的第多少天?

import java.util.Scanner;      
public class Test {public static void main(String[] args) {Scanner s = new Scanner(System.in);System.out.println("请输入月份:  ");int month = s.nextInt();System.out.println("请输入日期:  ");int day = s.nextInt();int sum = 0;switch(month){default:System.out.println("输入错误");case 12:sum += 30; //+11月case 11:sum += 31; //+10月case 10:sum += 30; //+9月case 9:sum += 31; //+8月case 8:sum += 31; //+7月case 7:sum += 30; //+6月case 6:sum += 31; //+5月case 5:sum += 30; //+4月case 4:sum += 31; //+3月case 3:sum += 28; //+2月case 2:sum += 31; //+1月case 1:sum += day;					}System.out.println(month + "月" + day + "日" + "是2023年的第" + sum + "天");}
}

课外题
在这里插入图片描述

3.循环结构

依据条件,重复性执行某段语句
组成部分:初始化部分,循环条件部分,循环体部分,迭代部分
主要有以下三种

3.1 while语句

在这里插入图片描述

输出100以内的所以偶数及所有偶数的和
方法一:

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

方法二:

public class Test {    public static void main(String[] args) {int sum = 0;int i = 0;while(i <= 100){if(i % 2 == 0){sum += i; System.out.println(i);}i++;} System.out.println(sum);}
}

3.2 do…while语句

格式

初始化;
do{循环体;迭代条件;
}while(循环条件)

输出100以内的所以偶数及所有偶数的和
方法一:

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

方法二:

public class Test1 {  public static void main(String[] args) {int sum = 0;int i = 0;do{if(i % 2 == 0){sum += i; System.out.println(i);}i++;}while(i <= 100);System.out.println(sum);}      
}

while语句与do-while的区别:
do-while至少执行一次

3.3 for语句(常用)

格式:

for(初始化;循环条件;迭代条件;){循环体;
}

执行过程:初始化,循环条件,循环体,迭代条件,循环条件,循环体,迭代条件,循环条件…
简单编写

public class Test1 {  public static void main(String[] args) {//for循环(初始化,循环条件,迭代条件,循环体)for(int i = 1;i < 4;i++){System.out.println("欢迎光临,我的第" + i + "位客人!");} }
}

题目一
输出100以内的所以偶数及所有偶数的和
方法一:

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

方法二:

public class Test1 { public static void main(String[] args) {int sum = 0;for(int i = 0;i <= 100;i++){if(i % 2 == 0){sum += i; System.out.println(i);}} System.out.println(sum);}
}

题目二
在这里插入图片描述

public class Test1 {        public static void main(String[] args) {int sum = 0;for(int i = 0;i <= 150;i++){System.out.print(i);if(i % 3 == 0){System.out.print("foo");}if(i % 5 == 0){System.out.print("biz");}if(i % 7 == 0){System.out.print("baz");}System.out.println();} }
}

题目三:水仙花树
在这里插入图片描述

public class Test1 {      public static void main(String[] args) { int sum = 0; for(int i = 100;i < 1000;i++){ int a = i/100; int b = (i/10)%10; int c = i%10; if(a * a * a + b * b * b + c * c * c == i){ System.out.println(i); }} }
}

题目四
在这里插入图片描述

方法一
for循环

import java.util.Scanner;     
public class Test{public static void main(String[] args) {Scanner s = new Scanner(System.in);int a = 0; //正数个数int b = 0; //负数个数int c = 0; //总数个数for(;;c++){System.out.println("请输入数字");int j = s.nextInt();if(j > 0){a += 1;}else if(j < 0){b += 1;}else{break;}}System.out.println("总共输入个数:" + c + "正数个数为: " + a + "负数个数为:" + b );     }     
}

方法二
while循环

import java.util.Scanner;  
public class Test{public static void main(String[] args) {Scanner s = new Scanner(System.in);int a = 0; //正数个数int b = 0; //负数个数int c = 0; //总数个数while(true){System.out.println("请输入数字");int j = s.nextInt();if(j > 0){a += 1;c++;}else if(j < 0){b += 1;c++;}else{break;}}System.out.println("总共输入个数:" + c + "正数个数为: " + a + "负数个数为:" + b );     }     
}

方法三

import java.util.Scanner;    
public class Test{public static void main(String[] args) {Scanner s = new Scanner(System.in);int a = 0; //正数个数int b = 0; //负数个数int c = 0; //总数个数for(int i = 1;i != 0;c++){System.out.println("请输入数字");int j = s.nextInt();if(j > 0){a += 1;}else if(j < 0){b += 1;}else{i = 0;}}System.out.println("总共输入个数" + c + "正数个数为: " + a + "负数个数为:" + b + "零个数为:1");     }     
}

嵌套循环
在这里插入图片描述

一:打印边长为5*的正方形(特殊的长方形)

public class Test{         public static void main(String[] args) {for(int i = 1;i < 6;i++){//外层控制行数for(int j = 1;j < 6;j++){//内层控制列数System.out.print("*");}System.out.println();}}
}

二:打印金字塔型

public class Test{     public static void main(String[] args) {for(int i = 0;i < 6;i++){for(int j = 0;j < 6 - i;j++){System.out.print(" ");}for(int k = 0; k < (i + 1) * 2 - 1;k++){System.out.print("*");}System.out.println();}
}
}

题目一:九九乘法表

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

题目二:1~100之间的质数
方法一

public class Test{              public static void main(String[] args) {boolean flag = false;for(int i = 2;i <= 100;i++){for(int j = 2;j < i;j++){if(i % j == 0){flag = true;}}if(flag == false){System.out.println(i);}flag = false;}}
}

方法二(优化)

public class Test{                public static void main(String[] args) {boolean flag = false;long start = System.currentTimeMillis();//获取当前系统毫秒数for(int i = 2;i <= 1000;i++){for(int j = 2;j <= Math.sqrt(i);j++){//优化一:取根号即可确定根号i平方 == iif(i % j == 0){flag = true;break;           //优化二:满足条件就退出循环}}if(flag == false){System.out.println(i);}flag = false;}long end = System.currentTimeMillis();System.out.println("总花费时间:" + (end-start));}
}
  1. break:结束"当前"循环;continue:结束"当次"循环
  2. break语句与continue语句之后不能添加其他语句

注:JDK1.5提供方便遍历集合,数组元素的foreach循环

4.练习题

在这里插入图片描述

在这里插入图片描述  
在这里插入图片描述
感谢大家的支持,关注,评论,点赞!
参考资料:
尚硅谷宋红康20天搞定Java基础上部

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

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

相关文章

知识图谱实战应用22-数据导入技巧与基于py2neo的金融领域风险评估的应用

大家好,我是微学AI,今天给大家介绍一下知识图谱实战应用22-数据导入技巧与基于py2neo的金融领域风险评估的应用。本文的金融领域风险评估的应用旨在利用知识图谱技术对金融风险进行评估和管理。该项目利用py2neo库与Neo4j图数据库进行交互,构建一个金融领域的知识图谱,并根…

vue 封装一个鼠标拖动选择时间段功能

<template><div class"timeRange"><div class"calendar"><table><thead><tr><th rowspan"6" class"weekRow"><b>周/时间</b></th><th colspan"24"><…

【机器学习】西瓜书习题3.3Python编程实现对数几率回归

参考代码 结合自己的理解&#xff0c;添加注释。 代码 导入相关的库 import numpy as np import pandas as pd import matplotlib from matplotlib import pyplot as plt from sklearn import linear_model导入数据&#xff0c;进行数据处理和特征工程 # 1.数据处理&#x…

Linux 学习记录60(ARM篇)

Linux 学习记录60(ARM篇) 本文目录 Linux 学习记录60(ARM篇)一、SPI总线1. 概念2. 硬件连接 二、SPI总线协议三、SPI总线通信模式四、对比IIC总线和SPI总线1. 相同点2. 不同点 思维导图 一、SPI总线 1. 概念 1、SPI总结是Motorola首先提出的全双工三线/四线同步串行总线 2、采…

Rust- 模块

&#xff08;1&#xff09;在项目根目录下创建mylib&#xff08;里面实现自定义的外部模块&#xff09; cargo new --lib mylib &#xff08;2&#xff09;在 项目名\mylib\src\lib.rs文件中实现新模块 pub mod add_salary {pub fn study(name: String) {println!("Rust…

WEB浏览器轻松读写NDEF智能海报、地图坐标、文本标签信息

本示例使用的发卡器&#xff1a;Android Linux RFID读写器NFC发卡器WEB可编程NDEF文本/智能海报/-淘宝网 (taobao.com) <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&…

Python状态模式介绍、使用

一、Python状态模式介绍 Python状态模式&#xff08;State Pattern&#xff09;是一种行为型设计模式&#xff0c;它允许对象在不同的状态下表现不同的行为&#xff0c;从而避免在代码中使用多重条件语句。该模式将状态封装在独立的对象中&#xff0c;并根据当前状态选择不同的…

flutter开发实战-图片保存到相册

flutter开发实战-图片保存到相册。保存相册使用的是image_gallery_saver插件 一、引入image_gallery_saver插件 在pubspec.yaml中引入插件 # 保存图片到相册image_gallery_saver: ^1.7.1# 权限permission_handler: ^10.0.0二、保存到相册的代码 使用image_gallery_saver将图…

使用pikachu管理工具下的XSS后台进行实战

写在前面的重要提示&#xff1a; Attention&#xff1a;技术没有好坏之分&#xff0c;关键在于使用技术的人或组织。网络安全技术是一把双刃剑 – 作为网络安全人&#xff0c;虽然无法控制头上的帽子是否会变绿&#xff0c;但能控制不让它变黑&#xff1b;无论我们在物质上面对…

redis主从复制哨兵Cluster

目录 前言 一、模式介绍 1.1 主从复制 1.2 哨兵 1.3 集群 二、主从复制 2.1 主从复制的作用 2.2 主从复制流程 2.3 搭建Redis 主从复制 三、Redis 哨兵模式 3.1 哨兵模式原理 3.2 哨兵模式的作用 3.3 哨兵组成结构 3.4 哨兵故障转移机制 3.5 搭建Redis 哨兵模式…

史上最全react面试题

react面试题 react生命周期面试题1.react 生命周期函数2.react生命周期中&#xff0c;最适合与服务端进行数据交互的是哪个函数3.运行阶段生命周期调用顺序4.shouldComponentUpdate 是做什么的&#xff0c;&#xff08;react 性能优化是哪个周期函数&#xff1f;&#xff09;5.…

..\obj\project.assets.json”。运行 NuGet 包还原以生成此文件。

问题 有时拉取一个新的项目后出现&#xff0c;如标题中的问题&#xff0c;不管用的是Vs 还是Rider都有可能出现&#xff1b;当使用IDE的自动还原生成相关文件时&#xff0c;没有效果&#xff0c;一般第一次打开项目时IDE是会自动生成的。 解决办法 dotnet msbuild -t:restor…

科技项目验收测试:验证软件产品功能与性能的有效手段

科技项目验收测试是验证软件产品功能与性能的重要手段&#xff0c;在项目开发中起到了至关重要的作用。本文将从产品质量、需求验证、性能测试等方面&#xff0c;探讨科技项目验收测试的有效手段。 1、产品质量保证是验收测试的核心 科技项目验收测试的核心目标是验证软件产品…

开发基于 LoRaWAN 的设备--低功耗设备电池的选项

电池选型简介 在开发物联网 (IoT) 应用无线设备时,选择电池具有挑战性,但对于成功至关重要。使用 LoRaWAN 传感器时,请考虑外形尺寸、容量、峰值电流、自放电、产品寿命和成本,所有这些都会影响您选择的电池。 本文档可帮助您选择最适合您的应用的电池。该文件还: 帮助您确…

xshell连接Windows中通过wsl安装的linux子系统-Ubuntu 22.04

xshell连接Windows中通过wsl安装的linux子系统-Ubuntu 22.04 一、安装linux子系统 1.1、 启动或关闭Windows功能-适用于Linux的Windows子系统 1.2 WSL 官方文档 使用 WSL 在 Windows 上安装 Linux //1-安装 WSL 命令 wsl --install//2-检查正在运行的 WSL 版本&#xff1a;…

关于在VS2017中编译Qt项目遇到的问题

关于在VS2017中编译Qt项目遇到的问题 【QT】VS打开QT项目运行不成功 error MSB6006 “cmd.exe”已退出,代码为 2。如何在VS2017里部署的Qt Designer上编辑槽函数 【QT】VS打开QT项目运行不成功 error MSB6006 “cmd.exe”已退出,代码为 2。 链接 如何在VS2017里部署的Qt Design…

10.python设计模式【代理模式】

内容&#xff1a;为其他对象提供一种代理一控制对这个对象的访问 应用场景&#xff1a; 远程代理&#xff1a; 为远程的对象提供代理虚代理&#xff1a;根据需要创建很大的对象保护代理&#xff1a;控制对原始对象的访问&#xff0c;用于对象有不同访问权限时 UML图 举个例…

VUE,子组件给父组件传递参数,props 自定义属性,ref

<template><div><!-- 子传父 --><!-- 通过父组件给子组件传递函数类型的props实现&#xff1a;子给父传递数据 --><AA :getAAname"getAAname"/><h1>AA&#xff1a;{{aaname}}</h1><!-- 通过父组件给子组件绑定一个自定…

WIZnet W6100-EVB-Pico DHCP 配置教程(三)

前言 在上一章节中我们讲了网络信息配置&#xff0c;那些网络信息的配置都是用户手动的去配置的&#xff0c;为了能跟电脑处于同一网段&#xff0c;且电脑能成功ping通板子&#xff0c;我们不仅要注意子网掩码&#xff0c;对于IP地址主机位和网络位的划分&#xff0c;而且还要注…

selenium定位元素的方法

Selenium可以驱动浏览器完成各种操作&#xff0c;比如模拟点击等。要想操作一个元素&#xff0c;首先应该识别这个元素。人有各种的特征&#xff08;属性&#xff09;&#xff0c;我们可以通过其特征找到人&#xff0c;如通过身份证号、姓名、家庭住址。同理&#xff0c;一个元…