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. Redis学习-复制

    Redis支持简单且易用的主从复制(master-slave replication)功能, 该功能可以让从服务器(slave server)成为主服务器(master server)的精确复制品.以 ...

  2. Welcome to my Blog

    Only English? Oh my god!!! why open live write can't write by Chinese?

  3. C#中string,char[],byte[]互相转换

    string 转换成 Char[] string ss = "我爱你,中国"; char[] cc = ss.ToCharArray(); Char[] 转换成string str ...

  4. NancyFx 2.0的开源框架的使用-ModelBinding(实现绑定)

    NancyFx框架中使用绑定模型 新建一个空的Web程序 然后安装Nuget库里面的包 Nancy Nancy.Hosting.Aspnet Nancy.ViewEnglines.Spark 并在We ...

  5. Telnet的开启及使用

    1首先在控制面板找到程序和功能,双击点开. 2,点击打开或关闭WINDOWS功能 3勾选上这两项 点击确定即可. ------------------------------------------- ...

  6. A Bayesian election prediction, implemented with R and Stan

    If the media coverage is anything to go by, people are desperate to know who will win the US electio ...

  7. 目前微信 微博 新浪 豆瓣等所有分享的js插件

    原理 功能 集成微信.微博.开心.豆瓣.人人.qq微博.搜狐.qq空间等分享 即时分享: 默认加载插件,即启动全部分享 定制分享:通过参数配置.静态数据配置 由你决定何时分享,如何分享 扩展: 通过数 ...

  8. java控件之树形结构JTree

    import javax.swing.JFrame; import javax.swing.JTree; import javax.swing.event.TreeSelectionEvent; im ...

  9. 反射型XSS的逆袭之路

    0×00背景 这是一次结合各自技巧的渗透过程,由于原作者的截图不多,我们只是简单叙述一下思路~ 目标是一家本地的游戏公司,起因是找到一个反射型xss,但是却被对方公司忽略,而作者身边的一个妹子也在这家 ...

  10. Qt自定义标签按钮

    当你接触到Qt时,你会为它极为方便的跨平台方面感到吃惊,从而想尝试着使用Qt.渐渐地你会发现Qt自带的一些控件不能满足自己的需要,此时就需要我们自己定义一个属于自己的控件.总所周知,标签的风格设置类比 ...