java 打印空心菱形的两种实现
第一种实现方式:
//打印给定行数的空心菱形
public static void draw(int size){
if (size % 2 == 0) //如果是偶数行变为奇数
{
size++;
}
//中心点:2*size -1 ,实现的关键在于找准中心点,下面以打印7行的空心菱形为例进行分析
for (int i = 0; i < size/2+1; i++)//打印菱形上面的4行
{
for (int j = 0; j < 2*size - 1; j++)//每一行的总长度是2*size -1
{
if (j == (size -1-2*i) || j ==(size -1 + 2*i))//中心点左右两边对称的位置打印 * 号
{
System.out.print("*");
}
else
{
System.out.print(" ");
}
}
System.out.println();
}
for (int i = size/2-1; i >= 0; i--)//打印菱形下面的3行
{
for (int j = 0; j < 2*size - 1; j++)
{
if (j == (size -1-2*i) || j ==(size -1 + 2*i))//中心点左右两边对称的位置打印 * 号
{
System.out.print("*");
}
else
{
System.out.print(" ");
}
}
System.out.println();
}
}
这是一个正方形里面有一个菱形:
第二种实现方式:
public static void draw2(int size){
if (size % 2 == 0)
{
size++;
} for (int i = 0; i < size/2 + 1; i++)
{
for(int j =size/2+1;j>i+1;j--){//打印菱形空上角位置的空白
System.out.print(" ");
}
for (int j = 0; j < 2*i+1; j++)//打印菱形的上半部分
{
if (j==0||j==2*i)
{
System.out.print("*");
}
else
{
System.out.print(" ");
}
}
System.out.println();
} for (int i = size/2+1; i < size; i++)//打印菱形的下半部分
{
for (int j = 0; j < i - size/2; j++)//打印左下角的空白
{
System.out.print(" ");
}
for (int j = 0; j < 2 * size -1-2*i; j++)
{
if (j==0||j==2*(size -i -1))
{
System.out.print("*");
}
else
{
System.out.print(" ");
}
}
System.out.println();
}
}
输出结果:
java 打印空心菱形的两种实现的更多相关文章
- Java打印空心菱形
使用Java打印空心菱形 public static void main(String[] args) { int n = 5; //这里输出菱形的上半部分 for (int i = 1; i < ...
- Java温故而知新-空心菱形
空心菱形 今天做题练手,题目是空心菱形,一开始没什么思路,去网上找了找,发现很难找到讲的通透的,自己现在独立做出来了,记录一下,以备后用. * * * * * * * * * * * * * * * ...
- java动态获取WebService的两种方式(复杂参数类型)
java动态获取WebService的两种方式(复杂参数类型) 第一种: @Override public OrderSearchListRes searchOrderList(Order_Fligh ...
- c语言打印空心菱形
***算法:把菱形的中心看成坐标的原点(,),由此可以知道,如果|x| + |y| <= n;则打印输出"*"号,否则打印输出" " int mai(){ ...
- Java中HashMap遍历的两种方式
Java中HashMap遍历的两种方式 转]Java中HashMap遍历的两种方式原文地址: http://www.javaweb.cc/language/java/032291.shtml 第一种: ...
- java中数组复制的两种方式
在java中数组复制有两种方式: 一:System.arraycopy(原数组,开始copy的下标,存放copy内容的数组,开始存放的下标,需要copy的长度); 这个方法需要先创建一个空的存放cop ...
- Java使用SFTP和FTP两种连接方式实现对服务器的上传下载 【我改】
[]如何区分是需要使用SFTP还是FTP? []我觉得: 1.看是否已知私钥. SFTP 和 FTP 最主要的区别就是 SFTP 有私钥,也就是在创建连接对象时,SFTP 除了用户名和密码外还需要知道 ...
- Java中Compareable和Comparator两种比较器的区别
Java中Compareable和Comparator两种比较器的区别 参考原文链接:https://www.cnblogs.com/ldy-blogs/p/8488138.html 1.引言 在ja ...
- JAVA 集合 List 分组的两种方法
CSDN日报20170219--<程序员的沟通之痛> [技术直播]揭开人工智能神秘的面纱 程序员1月书讯 云端应用征文大赛,秀绝招,赢无人机! JAVA 集合 List 分组的两种方法 2 ...
随机推荐
- 原 js实现数据持久化
在写js事件时,常常遇到点击一个事件,然后在若干时间以后需要知道最近一次点击的事件的结点.比如这里: 我点击树节点1,再点击tab2,然后我再来回切换tab,假如最后一次点击tab时在tab2上,这时 ...
- C#断点调试时属性get块逻辑执行多次
上面的例中,当打断点调试时,断点断住时, Attr1属性的get块就会执行一次. 两个断点加在逻辑中对Attr1的访问,最后发现CTest get Attr1.打印了3次. 得到的结论是:多余的2次打 ...
- 一键安装Cloud Torrent
wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubi/doubi/master/cloudt.sh ...
- Tomcat调试404错误
开篇附上我找到的部分解决方法摘自:https://blog.csdn.net/psp0001060/article/details/51879232 如不想跳转查看,链接内容如下: 问题一: ...
- 【spring源码分析】IOC容器初始化(一)
前言:spring主要就是对bean进行管理,因此IOC容器的初始化过程非常重要,搞清楚其原理不管在实际生产或面试过程中都十分的有用.在[spring源码分析]准备工作中已经搭建好spring的环境, ...
- HTML5移动端触摸事件
一.移动端事件问题 1.click事件300ms延迟问题 2007年第一代iphone发布,移动端Safari首创双击缩放功能,原理是click一次后,经过300ms之后检测是否再有一次click,如 ...
- Visual Studio 2019 使用 Live Share
一.前言 Visual Studio 2019 在今天发布(北京时间)了,这次带来了一个比较有趣的 Live Share 功能,使用它可以进行更好的协作开发.主要功能: 更多资料可看官方介绍: Vis ...
- 关于当前Web前端技术的一些感悟和笔记
最近这些年,随着前端应用技术突飞猛进,产生了很多新的前端框架,当然也引入了数不胜数的前端技术概念,前端不在是早期Web Form的拖拉处理方式,也不再是Ajax+HTML那么简单,随着前端技术的发展, ...
- Kubernetes 网络排错指南
本文介绍各种常见的网络问题以及排错方法,包括 Pod 访问异常.Service 访问异常以及网络安全策略异常等. 说到 Kubernetes 的网络,其实无非就是以下三种情况之一 Pod 访问容器外部 ...
- 通知实战 设置通知图片(iOS10以后的)
解释两个基本扩展(Notification Content.Notification Service) Notification Content其实是用来自定义长按通知显示通知的自定义界面 Notif ...