(一)基于IDEA的JAVA基础11

news2024/11/20 9:14:40

为什么使用多重循环

有时单独一个循环不能满足我们的要求,我们就要使用多重循环,这不废话吗。

多重循环的使用:

一般我们使用多重循环都是双重for循环,    语法:

for(循环条件){

                      循环操作1;

                      for(循环条件2){

                      循环操作2;}

}

相信各位都已经看出端倪了,这个双重for循环是不是就是看条件找一个外循环,再分出个内循环就行了。

我们先根据这个最基本的特点写一个形象点的练习:

用双重循环展示时针和分针的关系。

这个够明显吧,时针走一步,分针走一圈,直接看代码:

public class Test02 {

    public static void main(String[] args) {

        //外层走一次,内层走一周

        for (int i=1; i<=12; i++){

            for (int j=1; j<=60;j++){

                System.out.println("现在是:"+i+"时,:"+j+"分");

            }

            System.out.println("---------------");

        }

    }

}

8d28d35f65b54d3fbaac7c24c2cfc950.png

 那我们进一步来熟悉多重循环,我们来用星星*打一个平行四边形,我们来分析一波,看看这个图就明白了

2c25b4de6d274cfeb22b6df804013708.png

 我们想办法每一层先打出#,#的数量是总层数-层数,我们使用for循环来实现,层数用i来代替,每一层的#用k来表示,k的初始值我们设置为5,k>层数i,就打印一个#,用k--每执行一次就减一,continue重复执行,直到不符合循环条件(k>i)时一层的#是不是就打好了。

for (int i=1; i<=5; i++){

   for (int k=5; k>i; k--){

       System.out.print("#");

       continue;

   }             是不是就是这么个东西?

单独打印一下看一下

7ea88c8f007c4497a40db9b4c99189eb.png

 下面是不是只要每一层打出固定的星星*就行了,看来完整的代码,跟着走一遍

public class Test01 {
    public static void main(String[] args) {
        for (int i=1; i<=5; i++){
           for (int k=5; k>i; k--){
               System.out.print("#");
               continue;
           }
           for (int j=1; j<=5; j++){
                //这里print是不换行的意思
                System.out.print("*");
                continue;
            }
            //打个空白换行
            System.out.println();
        }
    }
}

我们再把#换成空格就可以了:

c1ea148a2f8c4ea581e85c8f67178c57.png

是不是有点懵了,你把这想成洋葱一样一层一层去进行就行。

趁热打铁,我们再打个三角形🔺

781e3dcbba86422fb2a05a89584a495d.png

 还是一样的道理,#的规则没动,变得是*,找规律第一层1,第二层3…好,看出来了,每一层*的个数是层数*2–1

for (int j=1; j<=i*2-1; j++){

     //这里print是不换行的意思

     System.out.print("*");

     continue;

 }    其他地方不动,这一部分改一下循环条件即可。把#换成空格:

3a28d1acf185492b952981b5542e5e08.png

 这些比较经典的例子一定理解好记好,你去面试人家可能即兴让你打个三角形啥的。

多重循环后期开发中一般不会超过三层,不然那太麻烦了对不对,也不方便维护。

Break&continue

break语句

特点:

1.用于终止某个循环,使程序跳出循环块。

2.break后面的语句不再执行。

3.不仅可在循环中,也可在其他语句中。

练习一下:一次输入三名同学成绩,如果成绩输入为负数,强制停止输入,给予提醒。

aaecddb13ae1465ab331d00ddcb5773a.png

不废话,看代码分析。

public class Test01 {

    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);

        double score=0;

//用一个for循环一次输入同学成绩

        for (int i=1; i<=3; i++){

            System.out.println("请输入第:"+i+"名同学成绩");

//前面声明了全局变量,此处直接接收即可。

            score = input.nextDouble();

//判断是否为负数

            if (score<0){

                System.out.println("给我好好输!");

                break;

            }

            System.out.println("第"+i+"名同学成绩是"+score+"分");

        }

    }

}

我们看看我们直接输入负数会怎么样

d27b2861b2e0469399dad7aaa1fe8a40.png

 它弹出这个提示语句之后就直接把程序终止掉了,如果我们不加这个break它就会再一次让我们输第二名第三名的成绩。

再通过一个练习加深一下,1~10内整数整数相加,累加值大于21后终止。

非常简单:

public class Test01 {

    public static void main(String[] args) {

        int sum=0;

        for (int i=1; i<=10; i++){

            sum+=i;

            if (sum>=21){

                System.out.println("此时的sum值为:"+sum);

                break;

            }

        }

    }

}

36c7bb2374c646ffa7eb3c1ae6039ec0.png

break语句可以针对你不知道循环次数时,设置一个条件直接让他跳出就可以。

比如要找到4,是不是运行到4我们就要终止。

就像上面我们假装不知道什么时候执行到4,虽然看起来很蠢到我们这是假装,也就是我们不知道循环执行几次,我们不设置循环条件就行,直接空出来(如下)

这也就是所谓的死循环,这个时候我们是不是要在程序运行到我们想要的地方break终止就好了。

for (int i=1;; i++){
    if (i==4){
        break;
    }

continue语句

刚刚已经开了个头了,大致知道这个的作用是什么了,就是语句执行到它的时候,会重新跳回循环开头,再重新执行,不会在执行剩余的语句,直到不满足循环条件为止。

很简单,举个简单的例子,我们打印一下1到5这些数字,但独独不打印4。

public class Test01 {

    public static void main(String[] args) {

        for (int i=1;i<=5; i++){

            if (i==4){

                continue;

            }

            System.out.println(i);

        }

    }

}

a054a042833546b398f9866248ff6e7e.png

看结果他执行到4的时候,是不是直接跳回循环开头,执行剩下的循环直到不满足条件,4的时候下面的打印语句没有执行,就是这个意思。

程序调试

方法:

1.通过代码阅读或者加输出语句直接查找程序错误,也就是我们常用的sout打印语句,在关键地方可以看到程序运行的过程。

2.通过工具里的debug进行调试。

使用debug首先要打段点,就是这个程序从哪里开始你要找到,你认为错误出在那一段,在那一行前面单击出现红点就是打好了段点

d24b79799ec34ed49b5642d834a5e2d2.png

 一定要点行号那一块地方,不然打不上。然后右击图中地方就是debug

66a733bb8f834be2a1c10865a29ebd10.png

在页面右上角也有个小虫子形状的也是。

然后一行一行点着走就行了,可以一步步进行程序,看具体那一步执行那一块。

96cb302e450d46a89646639ef0296d3f.png

 

 

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

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

相关文章

关于swagger配置

swagger有多种样式&#xff0c;有些比较难用&#xff0c;如下界面比较友好 1.推荐对应的jar包如下 <!--swagger相关--> <dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.7.0<…

基于SSM框架就业管理系统

摘要 本论文主要讲述了基于SSM框架及MySQL数据库实现的就业管理系统的设计和开发过程。本论文中所讲的就业管理系统是通过所学的知识创办一个非商业性的网站平台&#xff0c;使所有想要就业信息查看的高校毕业生们与想要宣传自己公司的商家们都可以更方便快捷的进行就业和体验…

echarts实现炫酷科技感的流光效果

前言&#xff1a; echarts实现炫酷科技感的流光效果 效果图&#xff1a; 实现步骤&#xff1a; 1、引入echarts,直接安装或者cdn引入 npm i echarts https://cdn.jsdelivr.net/npm/echarts5.4.3/dist/echarts.min.js 2、封装 option方法&#xff0c;第一个数据是折线数据&a…

WebGIS 地铁交通线网数据可视化监控平台

数字孪生技术在地铁线网的管理和运维中的应用是一个前沿且迅速发展的领域。随着物联网、大数据、云计算以及人工智能技术的发展&#xff0c;地铁线网数字孪生在智能交通和智慧城市建设中的作用日益凸显。 图扑软件基于 HTML5 的 2D、3D 图形渲染引擎&#xff0c;结合 GIS 地图&…

掌握数据相关性新利器:基于R、Python的Copula变量相关性分析及AI大模型应用探索

在工程、水文和金融等各学科的研究中&#xff0c;总是会遇到很多变量&#xff0c;研究这些相互纠缠的变量间的相关关系是各学科的研究的重点。虽然皮尔逊相关、秩相关等相关系数提供了变量间相关关系的粗略结果&#xff0c;但这些系数都存在着无法克服的困难。例如&#xff0c;…

网络编程套接字应用分享【Linux C/C++ 】【UDP应用 | TCP应用 | TCP线程池小项目】

目录 前提知识 1. 理解源ip&#xff0c;目的ip和Macip 2. 端口号 3. 初识TCP&#xff0c;UDP协议 4. 网络字节序 5. socket 编程 sockaddr类型 一&#xff0c;基于udp协议编程 1. socket——创建套接字 2. bind——将套接字强绑定 3. recvfrom——接受数据 4. s…

练手项目层高阶3—《详解文件版本——通讯录管理系统》

文章目录 &#x1f6a9;前言&#x1f9e9;框架结构&#x1f4fa;效果展示&#x1f680;完整代码 &#x1f6a9;前言 我们前面写的两种方法&#xff08;静态和动态)&#xff0c;唯一缺点就是每次运行都要输入新的数据&#xff0c;很麻烦&#xff0c;也就是说写入的数据无法长久保…

C# 使用共享文件生成项目

项目文件中添加共享文件 <ItemGroup><Compile Include"..\Shared\Interfaces\Services\ITextService.cs" Link"Interfaces\Services\ITextService.cs" /><Compile Include"..\Shared\Services\TextService.cs" Link"Service…

[StartingPoint][Tier1]Sequel

Task 1 During our scan, which port do we find serving MySQL? (在扫描过程中&#xff0c;我们发现哪个端口为 MySQL 提供服务&#xff1f;) 3306 Task 2 What community-developed MySQL version is the target running? (目标正在运行哪个社区开发的 MySQL 版本&…

vue2/vue3手写专题——实现父子组件通信、祖先通信的方法

Vue 组件通信可以使用以下几种方法&#xff1a; 父组件向子组件传递数据&#xff1a;使用 props 将数据从父组件传递给子组件&#xff0c;子组件可以通过 props 接收和使用数据。子组件向父组件传递数据&#xff1a;使用 $emit 触发自定义事件&#xff0c;父组件可以通过事件监…

【Kaggle】练习赛《鲍鱼年龄预测》(上)

前言 上一篇文章&#xff0c;讲解了《肥胖风险的多类别预测》机器学习方面的文章&#xff0c;主要是多分类算法的运用&#xff0c;本文是一个回归的算法&#xff0c;本期是2024年4月份的题目《Regression with an Abalone Dataset》即《鲍鱼年龄预测》&#xff0c;在此分享高手…

Vuex的模块化管理

1&#xff1a;定义一个单独的模块。由于mutation的第二个参数只能提交一个对象&#xff0c;所以这里的ThisLog是个json串。 2&#xff1a;在Vuex中的index.js中引入该模块 3&#xff1a;在别的组件中通过...mapState调用模块保存的State的值。 4&#xff1a;用...mapMutations修…

K8S之Job和CronJob控制器

这里写目录标题 Job概念适用场景使用案例 CronJob概念适用场景使用案例 Job 概念 Job控制器用于管理Pod对象运行一次性任务&#xff0c;例如&#xff1a;对数据库备份&#xff0c;可以直接在k8s上启动一个mysqldump备份程序&#xff0c;也可以启动一个pod&#xff0c;这个pod…

LRU的原理与实现(java)

介绍 LRU的英文全称为Least Recently Used&#xff0c;即最近最少使用。它是一种内存数据淘汰算法&#xff0c;当添加想要添加数据而内存不足时&#xff0c;它会优先将最近一段时间内使用最少的数据淘汰掉&#xff0c;再将数据添加进来。 原理 LRU的原理在介绍中就已经基本说…

C++之类和对象(上)

目录 1.面向过程和面向对象初步认识 2.类的引入 3.类的定义 4.类的访问限定符及封装 4.1访问限定符 4.2 类的两种定义方式 第一种&#xff1a; 第二种&#xff1a; 4.3封装 5.类的实例化 6.类对象模型 1.面向过程和面向对象初步认识 C语言是面向过程的&#xff0c;…

华为汽车的“计算+通信”电子电气架构

文章目录 整车结构 硬件平台 软件平台 总结展望 整车EEA&#xff08;电子电气架构&#xff09;&#xff0c;按照博世提出的演进路径&#xff0c;大致可以划分为四个阶段&#xff1a;分布式模块阶段、区域控制阶段、中央计算阶段、云计算阶段。示例如下&#xff1a; 本文选取…

Java8 进阶

Java8 进阶 文章目录 Java8 进阶什么是函数式接口&#xff1f;public interface Supplierpublic interface Consumerpublic interface Predicatepublic interface FunctionJava8 特性总结&#xff1a;一、Function<T, R>二、Consumer<T>三、Supplier<T>四、P…

BUUCTF:BUU UPLOAD COURSE 1[WriteUP]

构造一句话PHP木马 <?php eval(system($_POST[shell])); ?> 利用eval函数解析$shell的值使得服务器执行system命令 eval函数是无法直接执行命令的&#xff0c;只能把字符串当作php代码解析 这里我们构造的木马是POST的方式上传&#xff0c;那就用MaxHacKBar来执行 …

分布式锁实战

4、分布式锁 4.1 、基本原理和实现方式对比 分布式锁&#xff1a;满足分布式系统或集群模式下多进程可见并且互斥的锁。 分布式锁的核心思想就是让大家都使用同一把锁&#xff0c;只要大家使用的是同一把锁&#xff0c;那么我们就能锁住线程&#xff0c;不让线程进行&#x…

springBoot--阿里云短信验证

阿里云短信验证 前言阿里云短信服务免费领取100条短信服务1、开通短信服务2、申请签名3、申请模板4、通过子用户获取账号的AccessKey ID 和AccessKey Secret5、使用教程 前言 在我们平时登录中短信验证吗验证在当今是必不可少的&#xff0c;下面是基于阿里云开发的短信验证操作…