Java 精炼解读数据结构逻辑控制
作者:K稳重 发布时间:2023-09-14 05:35:37
一、顺序结构
程序的执行和代码的执行顺序有关,如果调整代码的书写顺序, 则执行顺序也发生变化
二、分支结构
基本语法形式1:
if(布尔表达式){
//条件满足时执行代码 }
基本语法形式2
if(布尔表达式){
//条件满足时执行代码
}else{
//条件不满足时执行代码
}
基本语法形式3 多分支的情况
if(布尔表达式){
//条件满足时执行代码
}else if(布尔表达式){
//条件满足时执行代码
}else{
//条件都不满足时执行代码
}
举例:代码如下
public static void main(String[] args) {
int n = 10;
//if里面只能是布尔表达式
if(n % 2 == 0) {
System.out.println("偶数");
}else{
System.out.println("奇数");
}
}
}
读入字符串
读入字符串,如果字符串存在空格的情况下,遇到空格结束
如果你要读取字符串和整数,要先读取字符串再读取整数
如果要简单使用输入函数,可以用。项目当中,慎重!!!!!!
判断是不是闰年:
public class TestDemo {
方法1: public static void main1(String[] args) {
int year = 2000;
if (year % 100 == 0) {
if (year % 400 == 0) {
System.out.println("是闰年");
} else {
System.out.println("不是闰年");
}
} else {
if (year % 4 == 0) {
System.out.println("是闰年");
} else {
System.out.println("不是闰年");
}
}
}
方法2: public static void main(String[] args) {
int year = 2000;
if(year % 100!= 0 && year % 4== 0 ||year % 400 == 0){
System.out.println("是闰年");
}else{
System.out.println("不是闰年");
}
}
}
悬垂 else 问题
switch 语句
基本语法
switch(整数|枚举|字符|字符串){
case 内容1 : {
内容满足时执行语句;
[break;]
}
case 内容2 : {
内容满足时执行语句;
[break;]
} ...
default:{ 内容都不满足时执行语句;
[break;]
}
}
举例:
public static void main(String[] args) {
//long double float boolean不是不能做switch语句里面的参数的
int a = 10;
switch (a){//小括号里面是一个表达式,必须是一个简单的表达式,不能像c语言一样,比如说a>=10 && a<=20
case 1:
System.out.println("1");
break;
case 2:
System.out.println("2");
default:
System.out.println("参数不匹配");
break;
}
}
}
String类型可以作为Java中switch语句的参数
根据 switch 中值的不同, 会执行对应的 case 语句. 遇到 break 就会结束该 case 语句
如果 switch 中的值没有匹配的 case, 就会执行 default 中的语句.
我们建议一个 switch 语句最好都要带上 default
我们发现, 不写 break 的时候, case 语句会依次向下执行, 从而失去了多分支的效果
注意事项1
break 不要遗漏, 否则会失去 "多分支选择" 的效果
注意事项2
switch 中的值只能是 整数|枚举|字符|字符串
注意事项3 switch 不能表达复杂的条件
// 例如: 如果 num 的值在 10 到 20 之间, 就打印 hehe
// 这样的代码使用 if 很容易表达, 但是使用 switch 就无法表示.
if (num > 10 && num < 20) {
System.out.println("hehe");
}
三、 循环结构
3.1 while 循环
基本语法格式:
while(布尔表达式){
语句块;
}
循环条件为 true, 则执行循环语句; 否则结束循环
举例:
求1到10的和
public static void main(String[] args) {
int i = 1;
int sum = 0;
while(i <=10) {
sum += i;
i++;
}
System.out.println(sum);
}
}
求n的阶乘
public static void main(String[] args) {
int j = 3;
int ret = 0;
int sum = 1;
int i = 1;
while(i<=j) {
sum *=i;
i++;
}
System.out.println(sum);
}
注意事项:
1. 和 if 类似, while 下面的语句可以不写 { } , 但是不写的时候只能支持一条语句. 建议还是加上 { }
2. 和 if 类似, while 后面的 { 建议和 while 写在同一行.
3. 和 if 类似, while 后面不要多写 分号, 否则可能导致循环不能正确执行
3.2 break
break 的功能是让循环提前结束
代码示例:找到 100 - 200 中第一个 3 的倍数
public static void main(String[] args) {
int num = 100;
while (num <= 200) {
if (num % 3 == 0) {
System.out.println("找到了 3 的倍数, 为:" + num);
break;
}
num++;
}
//执行结果
//找到了 3 的倍数, 为:102
执行到 break 就会让循环结束.
3.3 continue
continue 的功能是跳过这次循环, 立即进入下次循环
举例:
求1到10之间三倍数
public static void main(String[] args) {
int i = 1;
while(i<=10) {
if(i % 3 !=0 ){
i++;
continue;
}
System.out.println(i);
i++;
}
执行到 continue 语句的时候, 就会立刻进入下次循环(判定循环条件), 从而不会执行到下方的打印语句
总结:break结束所有循环,continue结束本趟循环
break和continue都必须在循环里,【特殊:break可以在switch语句当中】
3.4 for 循环
基本语法:
for(布尔表达式1;布尔表达式2;布尔表达式3){
语句块;
}
表达式1: 用于初始化循环变量.
表达式2: 循环条件
表达式3: 更新循环变量
举例:
求1到100之间的和
public static void main(String[] args) {
int sum = 0;
for (int i = 1; i <= 100; i++) {
sum += i;
}
}
注意事项 (和while循环类似)
1. 和 if 类似, for 下面的语句可以不写 { } , 但是不写的时候只能支持一条语句. 建议还是加上 { }
2. 和 if 类似, for 后面的 { 建议和 while 写在同一行.
3. 和 if 类似, for 后面不要多写 分号, 否则可能导致循环不能正确执行.
3.5 do while 循环(选学)
基本语法 do{
循环语句;
}while(循环条件);
先执行循环语句, 再判定循环条件.
举例:
打印1-10
public static void main(String[] args) {
int num = 1;
do {
System.out.println(num);
num++;
} while (num <= 10);
}
注意事项:
1. do while 循环最后的分号不要忘记
2. 一般 do while 很少用到, 更推荐使用 for 和 while.
总结:
今天还是蛮累的,加入了计划之星第三季,要更加的忙起来了,后面我会多多刷题多多写博客。
加油!!!!!!
来源:https://blog.csdn.net/m0_64397675/article/details/123115761


猜你喜欢
- 什么是EurekaEureka是Netfilx开源的一个用来实现微服务的注册与发现的组件。它包含Server和Client两部分。为什么要有
- 前言最近开发了一个接口,完成后准备自测时,却被 * 拦截了,提示:(AUTH-NO)未能获得有效的请求参数!怎么会这样呢?于是我全局搜了这个
- 本文主要介绍的是一个球形水波的百分比控件,市面上有各种形形色色的百分比控件,我一直觉得水波是最炫的,UI给了我这个机会,然而网上搜了一大堆,
- springboot动态调用实现类定义规则的多种类型/** * 数据规则处理类型枚举 */public enum RuleType { &n
- 本文实例讲述了Android实现在xml文件中引用自定义View的方法。分享给大家供大家参考,具体如下:在xml中引用自定义view方法一:
- @property可以将python定义的函数“当做”属性访问,从而提供更加友好访问方式,但是有时候setter/deleter也是需要的。
- 被覆盖比较好理解,类似于多态的实现,访问时通过类方法表来访问,你实际是什么类型,访问的方法就是那个类型的方法而不会是你的父类的方法。被隐藏是
- public class BeanDefinitionHolder implements BeanMetadataElement { &nb
- JAVA堆内存管理是影响性能主要因素之一。堆内存溢出是JAVA项目非常常见的故障,在解决该问题之前,必须先了解下JAVA堆内存是怎么工作的。
- 我们在项目中都会遇到项目打包,可以通过assembly对我们的项目进行打包。针对打包构建jar包,本文不再叙述。具体可以参考maven插件a
- JPA的加锁机制有两种,乐观锁和悲观锁。乐观锁:乐观锁的特点在于认为数据冲突或者更新丢失等情况是很少发生的.当发生的时候,抛出异常和回滚就足
- 这篇会深化View拖拽实例,利用Flutter Animation、插值器以及AnimatedBuilder教大家实现带动画的抽屉效果。先来
- 第一种方式:使用@Param注解方式此种方式用法是我们在接口中写方法的参数时,在每个参数的前面加上一个@Param注解即可。该注解有一个va
- 今天碰到了在XML中应用以内部类形式定义的自定义view,结果遇到了一些坑。虽然通过看了一些前辈写的文章解决了这个问题,但是我看到的几篇都没
- MainActivity如下: package cn.testcallback; import android.os.Bundle; imp
- 本文实例讲述了C# winform实现右下角弹出窗口结果的方法。分享给大家供大家参考,具体如下:using System.Runtime.I
- 本文实例为大家分享了Android实现滚动日期选择器的具体代码,供大家参考,具体内容如下wheelview滚动效果的View这段时间需要用到
- springboot整合tkmapper1.导入pom依赖1.1 导入springboot的parent依赖<parent> &
- 在开发Web办公系统或文档系统时,PageOffice组件是众所周知的在线处理微软word/ppt/excel文档的强大工具,它对WORD文
- 前言今天遇到一个问题,我们有个ip.dat二进制文件,通过里面内容可以解析ip所在的地域信息,本地单元测试都是OK的,部署到测试环境后,发现