Java 循环语句之多重循环

循环体中包含循环语句的结构称为多重循环。三种循环语句可以自身嵌套,也可以相互嵌套,最常见的就是二重循环。在二重循环中,外层循环每执行一次,内层循环要执行一圈。

如下所示:

  

  接下来我们通过两个最简单的多重循环程序来深入理解多重循环的执行过程~

1、使用 * 打印长方形:

      

  实现代码为:

System.out.println("打印长方形");

        // 外层循环控制行数
for (int i = 1; i <= 3; i++) { // 内层循环控制每行的*号数
for (int j = 1; j <= 8; j++) { System.out.print("*");
} // 每打印完一行后进行换行
System.out.println();
}

  执行流程:当 i = 1 时,外层循环条件成立,进入内层循环,开始打印第一行内容。此时, j 从 1 开始,循环 8 次,内层循环结束后换行,实现第一行 8 个 * 的输出。接下来返回外层循环 i 变为 2 ,准备打印下一行,依此类推,直到完成长方形的打印。

2.使用 * 打印直角三角形:

   

  实现思路:上面的图形中,第 1 行有一个 * 号,第 2 行有两个 * 号,第 3 行有三个 * 号,所以可以使用二重循环来实现。其中,外层循环控制行数,内层循环控制每行的 * 号数。同时,我们发现一个规律,当打印每行信息时,内层循环变量的最大值和外层循环变量的值相等。

  实现代码为:

System.out.println("打印直角三角形");

        // 外层循环控制行数
for (int i = 1; i <= 3; i++) { // 内层循环控制每行的*号数
// 内层循环变量的最大值和外层循环变量的值相等
for (int j = 1; j <= i; j++) { System.out.print("*");
} // 每打印完一行后进行换行
System.out.println();
}

3.进阶——打印九九乘法表:

  

  经过上面两个简单的例子我们可以挑战用双重循环来打印九九乘法表了~

  实现思路:观察九九乘法表的结构和直角三角形很相似,所以我们可以直接在上面的第二个例子里作文章,关键只要修改内嵌循环中打印的内容就可以了。如何修改就要仔细观察九九乘法表到底是如何实现的,它一共有九行,那么最外面的循环最大值也应该是9;然后我们观察每行的规律,不难得出,假设每行的每个算式为j*i,j从1开始递增,且j的最大值为它所在的行数(与外层循环次数相同),而i则是等于它所在的行数,那么我们把j这个变量设计为第二层循环嵌套的变量,使它的最大值等于外层i的变量的值。最后注意一下print函数输出的格式就可以了~

  实现代码:

        System.out.println("打印九九乘法表");

        // 外层循环控制行数,总共有9层
for (int i = 1; i <= 9; i++) {
// 内层循环控制每行的乘法算式
// 内层循环变量的最大值和外层循环变量的值相等(相当于直角三角形)
for (int j = 1; j <= i; j++) { System.out.print(j+"*"+i+"="+(j*i)+" ");
} // 每打印完一行后进行换行
System.out.println();
}

4、判断一个数(小于10位)的位数。

  内容:判断一个数(小于10位)的位数。

     输入999,则输出 “它是个3位的数!”

  实现思路:判断一个数的位数,我们通常要用1/10/100/..来对这个数求除数(并且截去小数点取整),直到除数结果为0,则说明这个数不属于除数的位数。那么我们用count变量来存储位数的递增(从0开始);定一个循环变量i,初始值为1,每次循环乘以10;循环结束条件为需要判断的数除以i结果等于0。

  实现代码:

     int num = 999;
int count = 0;
for (int i = 1; num / i != 0; i *= 10) {
count++;
} System.out.println("它是个" + count + "位的数!");

  运行结果:

  


  这节主要为大家介绍了几个多重循环的学习小例子,虽然它们都是那么微不足道,但是简短而不简单,这几个例子对巩固循环的基础还是有很大帮助的,多谢关注~

JAVA基础——最简单的多重循环程序的更多相关文章

  1. 3、Java基础语法(下):程序流程控制

    程序流程控制 从键盘获取不同类型的变量: 使用Scanner类,具体实现步骤: 1.导包:import java.util.Scanner; 2.Scanner的实例化:Scanner scan = ...

  2. Java基础-1简单了解与原理

    简单了解: Java看起来设计得很像C++,但是为了使语言小和容易熟悉,设计者们把C++语言中许多可用的特征去掉了,这些特征是一般程序员很少使用的.因为Java没有结构,数组和串都是对象,所以不需要指 ...

  3. java入门很简单之各种循环

    1.if结构的语法: <1> 简单的if :if (条件){ //代码块                                                           ...

  4. java 基础 03 运算符 分支结构 循环结构

    今天内容: (1)运算符 (2)分支结构 (3)循环结构 1运算符 1.1赋值运算符 (1)简单赋值 = 表示赋值运算符,用于将=右边的数据赋值给=左边的变量来覆盖原来的数值. 笔试题: ia == ...

  5. Java 基础(六):循环

    循环 老生常谈的一个控制流程了,我们在是使用数组和集合的时候,遍历元素的时候经常会用到循环的结构,Java具有非常灵活的三种循环机制: 根据是否知道循环的次数可以为分为while循环,do...whi ...

  6. java实现一个简单的爬虫小程序

    前言 前些天无意间在百度搜索了一下以前写过的博客 我啥时候在这么多不知名的网站上发表博客了???点进去一看, 内容一模一样,作者却不是我... 然后又去搜了其他篇博客,果然,基本上每篇都在别的网站上有 ...

  7. java基础:简单实现线程池

    前段时间自己研究了下线程池的实现原理,通过一些源码对比,发现其实核心的东西不难,于是抽丝剥茧,决定自己实现一个简单线程池,当自已实现了出一个线程池后.发现原来那么高大上的东西也可以这么简单. 先上原理 ...

  8. 【原创】Java基础之简单修改jar包中的class

    有时需要修改很多jar(假设这些jar都位于lib目录)中其中一个jar中的某一个类,而且又没有原始代码或ide,这时最简单的方式是: 1 进入lib目录 # cd lib # ls test.jar ...

  9. Java基础(三十)泛型程序(Generic Programming)

    一.泛型程序的定义和使用 1.为什么要使用泛型程序设计 泛型程序设计意味着编写的代码可以被很多不同类型的对象所重用.同时,使得程序具有更好的可读性和安全性. ArrayList<String&g ...

随机推荐

  1. jQuery之文档处理

    jQuery 文档处理 1)内部插入 2)外部插入 3)包裹 4)替换 5)删除 6)复制 1.内部插入 append(content|fn) 向每个匹配的元素内部追加内容. 向所有段落中追加一些HT ...

  2. windows上安装jdk

    1.下载jdk安装包 jdk官网   http://www.oracle.com/technetwork/java/javase/downloads/index.html 2.安装jdk 傻瓜式下一步 ...

  3. ftp服务器可以连接但不能传输数据(proftpd)

    问题:在客户端连接FTP服务器(proftpd)时可以正常连接,但是无法正常传输数据 ftp> ls530 Please login with USER and PASSPassive mode ...

  4. Android Weekly Notes Issue #258

    Android Weekly Issue #258 May 21st, 2017 Android Weekly Issue #258 本期内容: 围绕着Google I/O的热潮, 本周的posts除 ...

  5. Vulkan Tutorial 05 物理设备与队列簇

    操作系统:Windows8.1 显卡:Nivida GTX965M 开发工具:Visual Studio 2017 Selecting a physical device 通过VkInstance初始 ...

  6. 【二】python内置类型

    1.布尔类型 表示真假的类型(true和false) 数字 0.None,以及元素为空的容器类对象都可视作False,反之为 True. In [1]: bool(0) Out[1]: False I ...

  7. python 获取utc时间转化为本地时间

    import datetime timenow = (datetime.datetime.utcnow() + datetime.timedelta(hours=8)) timetext = time ...

  8. 入职这一段时间的总结,Don't Repeat Yourself.

    1.第一次接触到大型软件系统的开发,现在我们使用的是 python + flask +vue.js ,数据库:postgresql 2. 不要在自己不懂的情况下复制代码,每次分析一段代码的时候,就跟以 ...

  9. 一天搞定CSS:层级(z-index)--18

    因为定位的出现,所以有了元素重叠的情况,此时就出现了显示谁的情况.在多层布局时,容易出现这种情况 定位position见:http://blog.csdn.net/baidu_37107022/art ...

  10. java中的各种流(老师的有道云笔记)

    内存操作流-字节 之前的文件操作流是以文件的输入输出为主的,当输出的位置变成了内存,那么就称为内存操作流.此时得使用内存流完成内存的输入和输出操作. 如果程序运行过程中要产生一些临时文件,可采用虚拟文 ...