for循环打印空心菱形的新方法
相信大家在学习流程控制的循环结构时,一定都用for循环绘制过菱形和空心菱形吧,我记得我当时写的很麻烦,把一个菱形分为上下两部分,上面2重for循环,下面2重for循环,相信有很多的小伙伴都是这样做的吧,但是这样也造成了很多的代码冗余,今天无意间看到另外一种简便的方法,具体思路和实现过程如下图所示:
思路:
1.先画一个正方形,边长为奇数.
2.定义每一行的初始位置和结束位置,初始值为:边长/2+1.
3. 在每一行的输出位置和结束位置打印*,即为最中间的一条竖线.
4.改变初始位置和结束位置,上半部分菱形,初始位置--,结束位置++;下半部分相反.
5.在每一行的初始位置和结束位置之间打印*,即为实心菱形.
6.只在每一行的初始位置和结束位置处打印*,即为空心菱形.
第一步,输出正方形
public class PrintExample {
public static void main(String[] args) {
int size = 5;
for (int i = 1; i <= size; i++) {
for (int j = 1; j <= size; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
结果:
第二步,输出一条竖线
public class PrintExample {
public static void main(String[] args) {
int size = 5;
int startPos = size/2 + 1;
int endPos = size/2 + 1;
for (int i = 1; i <= size; i++) {
for (int j = 1; j <= size; j++) {
if (j>=startPos && j<=endPos) {
System.out.print("*");
}else {
System.out.print(" ");
}
}
System.out.println();
}
}
}
效果:
第三步,输出实心菱形
public class PrintExample {
public static void main(String[] args) {
int size = 5;
int startPos = size/2 + 1;
int endPos = size/2 + 1;
boolean flag = true;
for (int i = 1; i <= size; i++) {
for (int j = 1; j <= size; j++) {
if (j>=startPos && j<=endPos) {
System.out.print("*");
}else {
System.out.print(" ");
}
}
if ((endPos - startPos + 1) == size) {
flag = false;
}
if (flag) {
startPos--;
endPos++;
}else {
startPos++;
endPos--;
}
System.out.println();
}
}
}
效果:
第四步,输出空心菱形
public class PrintExample {
public static void main(String[] args) {
int size = 5;
int startPos = size/2 + 1;
int endPos = size/2 + 1;
boolean flag = true;
for (int i = 1; i <= size; i++) {
for (int j = 1; j <= size; j++) {
if (j==startPos || j==endPos) {
System.out.print("*");
}else {
System.out.print(" ");
}
}
if ((endPos - startPos + 1) == size) {
flag = false;
}
if (flag) {
startPos--;
endPos++;
}else {
startPos++;
endPos--;
}
System.out.println();
}
}
}
效果:
总结:
编程要懂得转换思路,多思考,通常一个问题会有多种解决方法,我们要多思考,多尝试,找出最方便的方法.
for循环打印空心菱形的新方法的更多相关文章
- Java打印空心菱形
使用Java打印空心菱形 public static void main(String[] args) { int n = 5; //这里输出菱形的上半部分 for (int i = 1; i < ...
- c语言打印空心菱形
***算法:把菱形的中心看成坐标的原点(,),由此可以知道,如果|x| + |y| <= n;则打印输出"*"号,否则打印输出" " int mai(){ ...
- 09-使用for循环输出空心菱形(循环)
/** * 使用for循环输出空心菱形 * */ public class Test7 { public static void main(String[] args) { for (int i = ...
- for循环输出空心菱形的形状【java】
使用for循环语句输出以下“空心菱形”效果: * * * * * * * * * * * * * * * * 建议优先参考笔者的另一篇文章:<for循环输出菱形的形状[java]> 代码: ...
- java 打印空心菱形的两种实现
第一种实现方式: //打印给定行数的空心菱形 public static void draw(int size){ if (size % 2 == 0) //如果是偶数行变为奇数 { size++; ...
- 案例>>>用绝对值的方法打印出菱形
import java.util.Scanner; public class Test { public static void main(String[] args) { Scanner sc = ...
- java在控制台输出空心正方形,菱形,空心菱形
使用for和if打印一个空心正方形 /*思路:要想打印一个5x5的空心正方形,首先它的第一横行和最后一行都是填满的,需要全部遍历出来,第二三四行和只有左右两条边是出来的,中间部分为空的.因此在打印第 ...
- Java温故而知新-空心菱形
空心菱形 今天做题练手,题目是空心菱形,一开始没什么思路,去网上找了找,发现很难找到讲的通透的,自己现在独立做出来了,记录一下,以备后用. * * * * * * * * * * * * * * * ...
- php——用for循环打印半金字塔、金字塔、正方形、倒金字塔、菱形、空心图形等
1.半金字塔 $n=5; //控制层数 for($i=1;$i<=$n;$i++){ //控制每层的 “*” 数 for($j=1;$j<=$i;$j++){ echo "*& ...
随机推荐
- 如何为linux服务器配置DNS解析?
本文建立在已经搭建好DNS服务器时,为linux机器配置DNS服务器的三种方式. IP地址是网络上标识站点的数字地址,为了方便记忆,采用域名来代替IP地址标识站点地址.DNS(域名解析)就是域名到IP ...
- 【分页工具-spring boot】Mybatis PageHelper 集成Spring boot
官方文档:https://github.com/pagehelper/pagehelper-spring-boot 1.引入包,测试过以下版本兼容性还是比较好的 <!--Mybatis-Spri ...
- CI控制器
当控制器要继承自定义的控制器的时候,有特定的定义: application/core/MY_Controller <?php class MY_Controller extends CI_Con ...
- jQuery-ajax-.get,.post方法
在上一篇中详细介绍了jQuery中ajax局部方法$.load()的使用.下面来介绍两个全局方法$.get(),$.post()的使用. 1.这两个全局方法其实和上一篇中的$.load()方法使用是差 ...
- Redis中的Stream数据类型作为消息队列的尝试
Redis的List数据类型作为消息队列,已经比较合适了,但存在一些不足,比如只能独立消费,订阅发布又无法支持数据的持久化,相对前两者,Redis Stream作为消息队列的使用更为有优势. 相信 ...
- Minimum Spanning Tree
前言 说到最小生成树(Minimum Spanning Tree),首先要对以下的图论概念有所了解. 图 图(Graph)是表示物件与物件之间的关系的数学对象,是图论的基本研究对象.图的定义方式有两种 ...
- .Net Core 学习依赖注入自定义Service
1. 定义一个服务,包含一个方法 public class TextService { public string Print(string m) { return m; } } 2. 写一个扩展方法 ...
- Coder必须自废的两样神功
Coder必须自废的两样神功 大理段氏以一阳指神功驰名天下.奉六脉宝经,立天龙佛院:凭借数百载基业威名,与嵩山少林.终南全真分庭抗礼:乃宋代中华武术三大派系之一. 二指禅是一种鲜为人知的秘传功法,通过 ...
- Image Classification
.caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { border: 1px so ...
- python+selenium 批量执行时出现随机报错问题【已解决】
出现场景:用discover方法批量执行py文件,出现随机性的报错(有时a.py报错,有时b.py报错...),共同特点:均是打开新窗口后,切换最新窗口,但定位不到新窗口的元素,超时报错.由于个人项目 ...