For循环复杂练习
for是循环当中经常用到的一个结构,练熟了才可以。
练习-需求描述:
在控制台打印以下形式的字符:
* * * * *
* * * *
* * *
* *
*
思路,首先分析需求的规律
1、首先分析需求要求的字符的数据结构特点,他的最小单位是什么,这里是"* "一个星号+一个空格
2、默认情况下,控制台打印字符都是靠左侧垂直排列的,但是现在第二行,第三行都不是靠左侧排列的,如果想让他按照需求排列的话,那么就得在*之前加" “(空格)补齐。
3、这里为了方便看,我们先把空格用"-"来表示,那么以上需求就变成了:
* * * * *
-* * * *
--* * *
---* *
----*
4、现在我们要打印的就有两个结构了,一个是"* "结构,另外一个就是"-"结构,并且"-"要在"*"号之前打印;
现在总共有五行,由此我们可以确定,外层循环需要循环五次。内层循环第一个打印"-"符号的是递增的,并且是从0开始递增的。但是打印"* "的这个是逐个递减的,也就是说初始值应该是最大值,并且比较的时候要用 > 大于号做比较
代码:
class ForFor{
public static void main(String[] args) {
for (int x = 1; x<=5 ; x++ ) {
for(int y = 1; y<x ; y++){
System.out.print("-");
}
for (int i = 5 ; i>=x ; i-- ) {
System.out.print("* ");
}
System.out.println();
}
}
}
此时输出的是:

此时我们把"-"替换为" "空格之后就得到了最终的答案。

For循环小结:
1、for循环的嵌套循环的时候一定要确定,谁在变,谁再跟着谁变,最多的时候变成什么最低的变成什么。比如上述的例子,*最多输出5次,最少输出1次。其次就是谁跟着谁变,顶层的连个子循环都是围绕着第一个循环的x在变化。等到这些确定之后再根据最多、最少的关系,就能够确定嵌套循环该如何去写了。
2、for循环还有while循环的区别,在for循环当中我们必须指定循环的次数,也就是说在for循环当中循环的次数是我们之前就确定的。只有当循环次数确定的时候才能够使用for循环,相反while循环结构就没有这个约束。这个也就是选择使用for 或者 while循环时的依据。
For循环复杂练习的更多相关文章
- 【.net 深呼吸】细说CodeDom(8):分支与循环
有人会问,为啥 CodeDom 不会生成 switch 语句,为啥没生成 while 语句之类.要注意,CodeDom只关心代码逻辑,而不是语法,语法是给写代码的人用的.如果用.net的“反编译”工具 ...
- Recurrent Neural Network系列1--RNN(循环神经网络)概述
作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 本文翻译自 RECURRENT NEURAL NETWORKS T ...
- Python学习--04条件控制与循环结构
Python学习--04条件控制与循环结构 条件控制 在Python程序中,用if语句实现条件控制. 语法格式: if <条件判断1>: <执行1> elif <条件判断 ...
- 模仿Linux内核kfifo实现的循环缓存
想实现个循环缓冲区(Circular Buffer),搜了些资料多数是基于循环队列的实现方式.使用一个变量存放缓冲区中的数据长度或者空出来一个空间来判断缓冲区是否满了.偶然间看到分析Linux内核的循 ...
- 【JS基础】循环
for 循环的语法: for (语句 1; 语句 2; 语句 3) { 被执行的代码块 } 语句 1 在循环(代码块)开始前执行 语句 2 定义运行循环(代码块)的条件 语句 3 在循环(代码块)已被 ...
- 【python之路4】循环语句之while
1.while 循环语句 #!/usr/bin/env python # -*- coding:utf-8 -*- import time bol = True while bol: print '1 ...
- To Java程序员:切勿用普通for循环遍历LinkedList
ArrayList与LinkedList的普通for循环遍历 对于大部分Java程序员朋友们来说,可能平时使用得最多的List就是ArrayList,对于ArrayList的遍历,一般用如下写法: p ...
- JavaScript单线程和浏览器事件循环简述
JavaScript单线程 在上篇博客<Promise的前世今生和妙用技巧>的开篇中,我们曾简述了JavaScript的单线程机制和浏览器的事件模型.应很多网友的回复,在这篇文章中将继续展 ...
- .NET基础 一步步 一幕幕[循环、逻辑语句块]
循环.逻辑语句块 好久不写博客了,断更了好几天了,从上周五到今天,从北京到上海,跨越了1213.0公里,从一个熟悉的城市到陌生的城市,还好本人适应力比较好,还有感谢小伙伴的接风咯,一切都不是事,好 ...
- Linux进程管理及while循环
目录 进程的相关概念 进程查看及管理工具的使用 Linux系统作业控制 调整进程优先级 网络客户端工具 bash之while循环 20.1.进程类型 守护进程 daemon,在系统引导过程中启动的进程 ...
随机推荐
- Java基础知识强化之集合框架笔记31:集合之泛型类的概述和基本使用
1. 为什么会有泛型呢? (1)早期的Object类型可以接收任意的对象类型,但是在实际使用中,会有类型转换的问题,也存在这隐患,所以Java提供了泛型来解决这个安全问题. 2. 泛型类的使用: (1 ...
- oracle周数计算方法
从星期天开始起算 Function Fn_GetWeekbyDate(P_Date Varchar2) Return Varchar2 Is Begin Return To_char(To_Date( ...
- ORACLE 中ROWNUM用法总结!(转)
对于 Oracle 的 rownum 问题,很多资料都说不支持>,>=,=,between...and,只能用以上符号(<.<=.!=),并非说用>,>=,=,be ...
- PL/SQL Developer简单使用
表在以下:
- java_设计模式_单例模式_Singleton Pattern(2016-08-04)
概念: 单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例. 适用场景: 在计算机系统中,线程池.缓存.日志对象.对话框.打印机.显卡的驱动程序对象常被设计成单例.这些应用都或多或 ...
- Spring 实例化bean的方式
实例化bean的方式有三种: 1.用构造器来实例化 2.使用静态工厂方法实例化 3.使用实例工厂方法实例化 当采用构造器来创建bean实例时,Spring对class并没有特殊的要求, 我们通常使用的 ...
- linux负载均衡
1.linux lvs nat实现负载均衡 添加两块网卡并开启路由管道 > /proc/sys/net/ipv4/ip_forward //开始路由管道 安装ipvsadm yum instal ...
- [FindBugs分析记录]Redundant nullcheck of o,which is known to be non-null
官网解释: This method contains a redundant check of a known non-null value against the constant null. 这种 ...
- grep操作
这个程序的名称来自Unix文本编辑器ed类似操作的命令: g/re/p 这个命令搜索整个文件中匹配给定正则表达式的文本行,并显示出来.有很多不同的命令行用于改变grep的默认行为,包括显示出不匹配的文 ...
- php笔记之GD库图片创建/简单验证码
燕十八 公益PHP培训 课堂地址:YY频道88354001 学习社区:www.zixue.it php画图:比如说验证码,缩略图,加水印都要用到GD库,所以要开启gd2库,才能用 首先找到php.in ...