第一种实现方式:

//打印给定行数的空心菱形
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. 20年硅谷技术牛人到访DataPipeline谈:技术如何与业务平衡发展

    导读:技术人员的常态是“左手支持业务签单,右手提升系统性能”,却经常陷入技术和业务该如何平衡发展的困惑?今天,且听一位硅谷牛人分享他的平衡之道. 以个人名誉申请31个国内外技术和产品专利,中国最佳CT ...

  2. TSC条码打印机C#例程(tsclib.dll调用) 【转】

    //----  program.cs using System;using System.Collections.Generic;using System.Windows.Forms; using S ...

  3. Aspnet mvc移除WebFormViewEngine

    为了提高mvc的速度,在Global.asax中移除WebFormViewEngine protected void Application_Start() { RemoveWebFormEngine ...

  4. Docker + Sonarqube 环境搭建

    Sonar概述 Sonar 是一个用于代码质量管理的开放平台.通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具. 一,postgres 数据库下载 docker pul ...

  5. maven项目更换本地仓库

    由于电脑重装系统更换原来maven项目的本地仓库 以前的仓库位置如图 需要更换的仓库位置 更换步骤如下: 更换后:

  6. Linux(CentOS7)下远程拷贝文件,scp命令

    一.Linux版本 二.scp命令 scp [参数] [原路径] [目标路径] scp -P 22022 /home/file.war root@192.168.253.172:/home/test ...

  7. 最好用的jQuery-Ajax缓存插件

    AJAX-Cache    最好用的jQuery-Ajax缓存插件 介绍 AJAX-Cache是一款jQuery插件,基于localStorage/sessionStorage实现异步请求缓存功能,并 ...

  8. react dnd demo2

    import React, { Component } from 'react'; import './App.css'; import Card from './Card'; import HTML ...

  9. CentOS7.x安装MySQL5.7.25

    mysql 5.7下载地址 社区版下载地址:https://dev.mysql.com/downloads/mysql/ 可能会有变动 找到5.7版本, 注:源码安装需要用到下面的包,可以先忽略,我安 ...

  10. vmware workstation安装教程以及其中出现的错误解决方法

    VMware Workstation 安装教程   1 下载好虚拟机,然后运行,点击下一步 2 选择我接受,下一步 3 选择安装的位置,可以自己选择,也可以默认不更改,这个无影响(图中I:\下面的VM ...