(一)基于IDEA的JAVA基础11

为什么使用多重循环

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

多重循环的使用:

一般我们使用多重循环都是双重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.hqwc.cn/news/596663.html

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

相关文章

Struts2的入门:新建项目——》导入jar包——》jsp,action,struts.xml,web.xml——》在项目运行

文章目录 配置环境tomcat 新建项目导入jar包新建jsp界面新建action类新建struts.xml,用来配置action文件配置Struts2的核心过滤器&#xff1a;web.xml 启动测试给一个返回界面在struts.xml中配置以实现页面的跳转&#xff1a;result再写个success.jsp最后在项目运行 配置环境 …

post请求搜索功能爬虫

<!--爬虫仅支持1.8版本的jdk--> <!-- 爬虫需要的依赖--> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.2</version> </dependency>…

HTTP 摘要认证

文章目录 一、什么是摘要认证二、工作流程三、实例演示 一、什么是摘要认证 摘要认证&#xff0c;即 Digest Access Authentication&#xff0c;是一种HTTP身份验证机制&#xff0c;用于验证用户的身份。相较于基本认证&#xff08;Basic Authentication&#xff09;使用用户名…

相机标定——四个坐标系介绍

世界坐标系(Xw,Yw,Zw) 世界坐标系是一个用于描述和定位三维空间中物体位置的坐标系&#xff0c;通常反映真实世界下物体的位置和方向。它是一个惯性坐标系&#xff0c;被用作整个场景或系统的参考框架。在很多情况下&#xff0c;世界坐标系被认为是固定不变的&#xff0c;即它…

解码mp4文件分别存储为pcm,yuv文件

// 解码分别写入对应文件 #include "myLog.h" #include <iostream>extern "C" { #include <libavformat\avformat.h> #include <libavutil\avutil.h> #include <libavcodec\avcodec.h> #include <libavutil\imgutils.h> #in…

华为ensp中高级acl (控制列表) 原理和配置命令 (详解)

作者主页&#xff1a;点击&#xff01; ENSP专栏&#xff1a;点击&#xff01; 创作时间&#xff1a;2024年4月6日23点18分 高级acl&#xff08;Access Control List&#xff09;是一种访问控制列表&#xff0c;可以根据数据包的源IP地址、目标IP地址、源端口、目标端口、协议…

多路转接-epoll/Reactor(2)

epoll 上次说到了poll&#xff0c;它存在效率问题&#xff0c;因此出现了改进的poll----epoll。 目前epoll是公认的效率最高的多路转接的方案。 快速了解epoll接口 epoll_create&#xff1a; 这个参数其实已经被废弃了。 这个值只要大于0就可以了。 这是用来创建一个epoll模…

应用性能分析工具CPU Profiler

简介 本文档介绍应用性能分析工具CPU Profiler的使用方法&#xff0c;该工具为开发者提供性能采样分析手段&#xff0c;可在不插桩情况下获取调用栈上各层函数的执行时间&#xff0c;并展示在时间轴上。 开发者可通过该工具查看TS/JS代码及NAPI代码执行过程中的时序及耗时情况…

torchvision中的数据集使用

torchvision中的数据集使用 使用和下载CIFAR10数据集 输出测试集中的第一个元素&#xff08;输出img信息和target&#xff09; 查看分类classes 打断点–>右键Debug–>找到classes 代码 import torchvisiontrain_set torchvision.datasets.CIFAR10(root"./data…

【PyQt5篇】使用QtDesigner添加控件和槽

文章目录 &#x1f354;使用QtDesigner进行设计&#x1f6f8;在代码中添加信号和槽 &#x1f354;使用QtDesigner进行设计 我们首先使用QtDesigner设计界面 得到代码login.ui <?xml version"1.0" encoding"UTF-8"?> <ui version"4.0&q…

基于Springboot中小企业设备管理系统设计与实现(论文+源码)_kaic

摘 要 随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应运而生&#xff0c;各行各业相继进入信息管理时代&a…

html骨架以及常见标签

推荐一个网站mdn。 html语法 双标签&#xff1a;<标签 属性"属性值">内容</标签> 属性&#xff1a;给标签提供附加信息。大多数属性以键值对的形式存在。如果属性名和属性值一样&#xff0c;可以致谢属性值。 单标签&#xff1a;<标签 属性"属…