《Java从入门到精通》“循环结构 “拓展习题

简介: 《Java从入门到精通》“循环结构 “拓展习题

目录

一、for循环嵌套:以打印九九乘法表

二、 用for循环打印一个菱形

三、 Java 嵌套循环之跳出多层循环



一、for循环嵌套:以打印九九乘法表


public class Test {

   public static void main(String args[]) {

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

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

               System.out.print(j+"*"+i+"="+i*j+" ");

           }

           System.out.println();

       }

   }

}


第一个 for 循环:代表行数。定一个整型变量 i, 它的初始值是 1;判断 i 是否小于等于 9;如果成立, i 就自增 1。

第二个 for 循环:代表列数。定一个整型变量 j, 它的初始值是 1;判断 j 是否小于等于 i;如果成立, j 就自增 1。

二、 用for循环打印一个菱形


public class Test {

   public static void main(String[] args) {

       //定义变量

       int i,j,q;

       //打印菱形的上半部分,左边打印倒直角三角形的空格,右边打印等腰三角形

       for( i = 1;i < 6; i ++) //外循环控制行数,共打印五行

       {

           //左边打印倒直角三角形空格

           for( j = 5; j > i; j--) //与外循环关联,初始值不变,表达式变化,控制打印的列数

           {

               System.out.print(" ");

           }

           //右边等腰三角形

           for( q = 1;q < i*2; q++) //与外循环关联,初始值不变,表达式变化,打印奇数列1,3,5,7,9

           {

               System.out.print("*");

           }

           System.out.println();    //换行

       }

       //打印菱形的下半部分,左边为直角三角形的空格,右边为倒的等腰三角形

       for(i = 1; i < 5; i++) //外循环控制行数,共打印四行

       {

           //左边直角三角形空格

           for(j = 1;j <= i; j++) {    //与外循环关联,初始值不变,表达式变化,共打印五行

               System.out.print(" ");

           }

           //右边倒直角三角形

           for( q = i*2; q < 9 ; q++) {    //与外循环关联,初始值变化,表达式不变,打印奇数列7,5,3,1

               System.out.print("*");

           }

           System.out.println();    //换行

       }

   }

}

思路:

  • 菱形为上下两个等腰三角形(用两个外层for循环分别代表上下两部分)
  • 上部分为倒直角三角形 + 等腰三角形。外层for以要嵌套两个for循环分别打印出倒直角三角形(直角三角形打印空格)和等腰三角形
  • 下部分为直角三角形和倒等腰三角形。外层for同样要嵌套两个for循环打印直角三角形(直角三角形打印空格)和倒的等腰三角形

三、 Java 嵌套循环之跳出多层循环

例:有以下程序,输出 0-99,两个数值间使用空格分隔,每 10 个数一行,每行用 ---- 分隔,代码:


public class Test {

   public static void main(String []args) {

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

           for(int j = 0; j < 10; j++){

               System.out.print("" + i + j +"  ");

           }

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

       }

       System.out.println("输出完毕!");

   }

}

输出结果


00  01  02  03  04  05  06  07  08  09  

--------------------------------------


10  11  12  13  14  15  16  17  18  19  

--------------------------------------


20  21  22  23  24  25  26  27  28  29  

--------------------------------------


30  31  32  33  34  35  36  37  38  39  

--------------------------------------


40  41  42  43  44  45  46  47  48  49  

--------------------------------------


50  51  52  53  54  55  56  57  58  59  

--------------------------------------


60  61  62  63  64  65  66  67  68  69  

--------------------------------------


70  71  72  73  74  75  76  77  78  79  

--------------------------------------


80  81  82  83  84  85  86  87  88  89  

--------------------------------------


90  91  92  93  94  95  96  97  98  99  

--------------------------------------

题目要求在不修改循环结构的情况下使输出结果变成输出 0-29:

根据题意我们一般情况下首先会想到直接判断当大于 29 的时候就跳出循环就是了。

代码如下:


public class Test {

   public static void main(String []args) {

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

           for(int j = 0; j < 10; j++){

               if(i * 10 + j > 29){

                   break;

               }

               System.out.print("" + i + j +"  ");

           }

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

       }

       System.out.println("输出完毕!");

   }

}

输出结果


00  01  02  03  04  05  06  07  08  09

--------------------------------------

10  11  12  13  14  15  16  17  18  19

--------------------------------------

20  21  22  23  24  25  26  27  28  29

--------------------------------------

--------------------------------------

--------------------------------------

--------------------------------------

--------------------------------------

--------------------------------------

--------------------------------------

--------------------------------------


看输出结果确实达到了只是输出 0-29,但是你会发现和题目要求的输出结果是不一样的,后面多出了很多分隔线条,那是因为跳出循环体的语句 break 只能跳出当前语句的上一层循环。

这时我们需要想办法让他跳出多层循环。

修改后代码如下:


public class Test {

   public static void main(String []args) {

       lable:

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

           for(int j = 0; j < 10; j++){

               if(i * 10 + j > 29){

                   break lable;

               }

               System.out.print("" + i + j +"  ");

           }

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

       }

       System.out.println("输出完毕!");

   }

}

输出结果


00  01  02  03  04  05  06  07  08  09  

--------------------------------------


10  11  12  13  14  15  16  17  18  19  

--------------------------------------


20  21  22  23  24  25  26  27  28  29  

--------------------------------------


我们在第 3 行定义了一个标记 标记名是 lable。

然后在第 7 行的跳出循环语句中使用 break lable 跳出到 lable 标记的循环外面。

相关文章
|
21小时前
|
Java C语言 ice
【Java开发指南 | 第十二篇】Java循环结构
【Java开发指南 | 第十二篇】Java循环结构
9 2
|
5天前
|
Java 测试技术
Java一分钟之-循环结构:for与while循环
【5月更文挑战第8天】本文探讨了Java中两种主要的循环结构——`for`和`while`循环。`for`循环适用于已知迭代次数的情况,常见问题包括无限循环、初始化错误和作用域混淆。`while`循环适用于循环次数未知但条件明确的情况,需注意更新条件、死循环初始化和逻辑错误。避免错误的策略包括明确循环目的、检查边界条件、管理迭代变量、进行代码审查和测试,以及使用增强型`for`循环。正确理解和使用这些循环能提升代码质量。
11 0
|
13天前
|
设计模式 算法 安全
Java多线程编程实战:从入门到精通
【4月更文挑战第30天】本文介绍了Java多线程编程的基础,包括线程概念、创建线程(继承`Thread`或实现`Runnable`)、线程生命周期。还讨论了线程同步与锁(同步代码块、`ReentrantLock`)、线程间通信(等待/通知、并发集合)以及实战技巧,如使用线程池、线程安全设计模式和避免死锁。性能优化方面,建议减少锁粒度和使用非阻塞算法。理解这些概念和技术对于编写高效、可靠的多线程程序至关重要。
|
14天前
|
Java
JAVA循环结构分析与设计
JAVA循环结构分析与设计
20 1
|
14天前
|
算法 Java 大数据
Java从入门到精通学习报告
Java从入门到精通学习报告
20 1
|
20天前
|
负载均衡 Java 数据库连接
Java从入门到精通:4.2.2学习新技术与框架——不断扩展自己的知识面,跟上技术的发展趋势
Java从入门到精通:4.2.2学习新技术与框架——不断扩展自己的知识面,跟上技术的发展趋势
|
20天前
|
Java Nacos 开发者
Java从入门到精通:4.2.1学习新技术与框架——以Spring Boot和Spring Cloud Alibaba为例
Java从入门到精通:4.2.1学习新技术与框架——以Spring Boot和Spring Cloud Alibaba为例
|
20天前
|
监控 前端开发 Java
Java从入门到精通:4.1.2参与实际项目——学习与团队成员协作,了解项目开发的流程和规范
Java从入门到精通:4.1.2参与实际项目——学习与团队成员协作,了解项目开发的流程和规范
|
20天前
|
前端开发 Java 测试技术
Java从入门到精通:4.1.1参与实际项目,锻炼编程与问题解决能力
Java从入门到精通:4.1.1参与实际项目,锻炼编程与问题解决能力
|
Java
编写Java程序,使用循环结构打印出九九乘法表
编写Java程序,使用循环结构打印出九九乘法表
101 0
编写Java程序,使用循环结构打印出九九乘法表