第一种实现方式:

//打印给定行数的空心菱形
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 打印空心菱形的两种实现的更多相关文章

  1. Java打印空心菱形

    使用Java打印空心菱形 public static void main(String[] args) { int n = 5; //这里输出菱形的上半部分 for (int i = 1; i < ...

  2. Java温故而知新-空心菱形

    空心菱形 今天做题练手,题目是空心菱形,一开始没什么思路,去网上找了找,发现很难找到讲的通透的,自己现在独立做出来了,记录一下,以备后用. * * * * * * * * * * * * * * * ...

  3. java动态获取WebService的两种方式(复杂参数类型)

    java动态获取WebService的两种方式(复杂参数类型) 第一种: @Override public OrderSearchListRes searchOrderList(Order_Fligh ...

  4. c语言打印空心菱形

    ***算法:把菱形的中心看成坐标的原点(,),由此可以知道,如果|x| + |y| <= n;则打印输出"*"号,否则打印输出" " int mai(){ ...

  5. Java中HashMap遍历的两种方式

    Java中HashMap遍历的两种方式 转]Java中HashMap遍历的两种方式原文地址: http://www.javaweb.cc/language/java/032291.shtml 第一种: ...

  6. java中数组复制的两种方式

    在java中数组复制有两种方式: 一:System.arraycopy(原数组,开始copy的下标,存放copy内容的数组,开始存放的下标,需要copy的长度); 这个方法需要先创建一个空的存放cop ...

  7. Java使用SFTP和FTP两种连接方式实现对服务器的上传下载 【我改】

    []如何区分是需要使用SFTP还是FTP? []我觉得: 1.看是否已知私钥. SFTP 和 FTP 最主要的区别就是 SFTP 有私钥,也就是在创建连接对象时,SFTP 除了用户名和密码外还需要知道 ...

  8. Java中Compareable和Comparator两种比较器的区别

    Java中Compareable和Comparator两种比较器的区别 参考原文链接:https://www.cnblogs.com/ldy-blogs/p/8488138.html 1.引言 在ja ...

  9. JAVA 集合 List 分组的两种方法

    CSDN日报20170219--<程序员的沟通之痛> [技术直播]揭开人工智能神秘的面纱 程序员1月书讯 云端应用征文大赛,秀绝招,赢无人机! JAVA 集合 List 分组的两种方法 2 ...

随机推荐

  1. SQL Server服务没有自动启动原因案例分析

    这个案例是前两天出现的,一直没有时间总结,25号凌晨4点去处理数据库的故障问题.远程连上公司的局域网,psping检查发现服务器的1433端口不通,数据库连接不上,但是主机又能ping通,登录服务器检 ...

  2. Oracl 一条sql语句 批量添加、修改数据

    最近一直在用,也一直在学oralc,项目上也用到了批量的添加(读取上传CSV文件信息,把符合条件的信息写入到数据库中),在写的时候想到了可能是数据量大就想该怎么快,(由于本人在.NET开发期间没有做过 ...

  3. memcached架构及缓存策略

    ----------------------------------------概述---------------------------------------- Memcached是一套高性能分布 ...

  4. 【spring源码分析】IOC容器初始化(八)

    前言:在上文bean加载过程中还要一个非常重要的方法没有分析createBean,该方法非常重要,因此特意提出来单独分析. createBean方法定义在AbstractBeanFactory中: 该 ...

  5. python一直放弃到双数的day10

    今天接着来说那个新的大知识点,函数,函数中是可以传递一个数值的,这个数值简称为参数,对于参数,他可以是任意个数和任意类型(数据类型).参数的其中一种有位置传参,函数中的参数有几个,那么就要传入几个,传 ...

  6. js获取数组中最大值,最小值

    遍历方法 var arr =[12,14,34,566,34,98,77] var max = arr[0]; for(var i=0;i<arr.length;i++){ if(max< ...

  7. VUE 安装及项目创建

    Vue.js 安装cnpm npm install -g 镜像 cnpm --registry=https://registry.npm.taobao.org 安装 vue.js cnpm insta ...

  8. 从Java小白到阿里巴巴工程师,回顾我两年来的学习经历

    添加描述

  9. selenium3(java)之屏幕截图操作

    selenium提供了截图的功能,分别是接口是TakesScreenshot和类RemoteWebDriver.该功能是在运行测试用例的过程中,需要验证某个元素的状态或者显示的数值时,可以将屏幕截取下 ...

  10. Graph图总结

    将COMP20003中关于Graph的内容进行总结,内容来自COMP20003,中文术语并不准确,以英文为准. Graph G = {V, E} 顶Vertices V: can contain in ...