在JavaSE的算法练习中,绘制菱形是一个比较常见的案例。菱形效果如下图所示:

我们在解决算法问题时,通常情况下,先不要急于马上编码,而是要先观察,找出解决问题的关键所在。

在上图中,我们可以看到,菱形的行数与列数均可沿水平或垂直中轴线予以对折,故菱形的行数与列数均应为奇数;

菱形左上角的空格数量,从顶部至水平中轴线,依次递减,具体说来每行递减一个空格,直至水平中轴线处无空格;

菱形顶部与底部各有一个星号,顶部与底部之间(不含顶部与底部)的部分每行有两个星号,每行其余部分除了星号外均是空格,而且在菱形的上半部分,每行的星号为行起始处(列角标为0),以及列角标为该行次序的2倍数(起始为0,如:起始0行中的星号坐标为0行0列、0行2*0列,即一个星号;1行中的星号坐标为1行0列、1行2*1列,即两个星号;2行中的星号坐标为2行0列、2行2*2列,两个星号;以此类推);

菱形的上半部分沿水平中轴线对折,即可得到菱形的下半部分,从而完成菱形的绘制。

我们在做完上述的算法分析后,接下来通过编码实现菱形的绘制。请详见下述代码:

import java.util.Scanner;

/**

* 绘制菱形

* @author 李章勇

*

*/

public class Demo {

public static void main(String[] args) {

Scanner sc=new Scanner(System.in);//创建一个键盘输入对象

System.out.println("请输入一个整数:");//提示输入

int size=sc.nextInt();//输入一个整数,并赋值给size变量

sc.close();//关闭输入流

if(size%2==0){//判断若不为奇数,则将其加1变为奇数

size+=1;

}

//绘制菱形的上半部分

for(int i=0;i<=size/2;i++){

for(int j=size/2;j>i;j--){//菱形的上半部分的左上角处空格绘制

System.out.print(" ");

}

for(int j=0;j<=2*i;j++){//菱形中星号与空格的绘制

if(j==0 || j==2*i){

System.out.print("*");

}else{

System.out.print(" ");

}

}

System.out.println();//绘制好一行就换行

}

//开始绘制菱形的下半部分

int k=0;

for(int i=size/2+1;i

k+=2;//由于是沿水平中轴线对折,故菱形的下半部分中,紧邻菱形水平中轴线的行,相当于其上两行的菱形行的对折,以此类推

for(int j=0;j

System.out.print(" ");

}

for(int j=0;j<=2*(i-k);j++){

if(j==0 || j==2*(i-k)){

System.out.print("*");

}else{

System.out.print(" ");

}

}

System.out.println();

}

}

}

运行上述代码,显示效果如下:

此外,还可以通过下述方法绘制菱形:

package com.itszt.test5;

/**

* 绘制菱形,

*/

public class Test2 {

public static void main(String[] args) {

//绘制菱形,10,行列为奇数

int n=10;

if(n%2==0)

{

n+=1;

}

//上半部分,0--->n/2

for(int i=0;i<=n/2;i++){

for(int j=n/2;j>i;j--){

System.out.print(" ");

}

for(int j=0;j<=2*i;j++){

if(j==0 || j==2*i){

System.out.print("*");

}else{

System.out.print(" ");

}

}

System.out.println();

}

//下半部分

for(int i=n/2-1;i>=0;i--){

for(int j=i;j

System.out.print(" ");

}

for(int j=0;j<=2*i;j++){

if(j==0 || j==2*i){

System.out.print("*");

}else{

System.out.print(" ");

}

}

System.out.println();

}

}

}

java画菱形_JavaSE之绘制菱形相关推荐

  1. 用java画菱形_【风马一族_Java】使用java,画出任意大小的菱形

    1 public classrhombic {2 3 public static voidmain(String[] args){4 5 /** 6 * scriber()画菱形的方法,参数 9 是指 ...

  2. java画星星菱形_使用java,画出任意大小的菱形

    标签: 1 public classrhombic {2 3 public static voidmain(String[] args){4 5 /** 6 * scriber()画菱形的方法,参数 ...

  3. php画个菱形,ai怎么绘制菱形? ai绘制扑克牌中方片的教程

    查看到本经验的你一定是通过搜索Adobe Illustrator看到本文的,在这里就不赘述Adobe Illustrator的下载安装了.Adobe Illustrator相较于photo shop的 ...

  4. php编辑菱形图案代码,vb怎么输出菱形图案?vb绘制菱形的教程

    数学课上经常绘制一些图案,手绘不够精确而且还不美观,除了我们可以借助于常规的绘图软件外,也可以使用编程的方式绘制一些特殊的图案,不但精确而且还美观,下面小编就以自己制作菱形图案的过程为例来说明如何利用 ...

  5. java 画树_java – 如何绘制代表连接节点图的树?

    我想在Java GUI中显示树,但我不知道如何.树代表连接节点的图形,如下所示: 我应该说我有自己的树类: public class BinaryTree { private BinaryNode r ...

  6. java 画树_java – 如何绘制代表连接节点图的树?

    我想在 Java GUI中显示树,但我不知道如何.树代表连接节点的图形,如下所示: 我应该说我有自己的树类: public class BinaryTree { private BinaryNode ...

  7. java画雪花_java分形绘制科赫雪花曲线(科赫曲线)代码分享

    首先我们举个例子: 我们可以看到西兰花一小簇是整个花簇的一个分支,而在不同尺度下它们具有自相似的外形.换句话说,较小的分支通过放大适当的比例后可以得到一个与整体几乎完全一致的花簇.因此我们可以说西兰花 ...

  8. java画的花_Java2D绘制花朵

    mport java.awt.*; import java.awt.event.*; import java.awt.geom.*; import java.applet.*; public clas ...

  9. java 画树_java Graphics 绘制树形图,保存图片

    最近项目中要做报告,生成树形图显示父子关系,网上没找到合适的工具,所以用Graphics画了个简单的. 很简单直接上代码吧. import javax.imageio.ImageIO; import ...

  10. java画一个扇形_绘制并填充一个扇形

    [c]代码库#include #include #include #include int main(void) { /* request auto detection */ int gdriver ...

最新文章

  1. react循环setstate_react -- 关于兄弟组件触发更新的问题
  2. ECCV 2018 | Pixel2Mesh:从单帧RGB图像生成三维网格模型
  3. 关于同步时间——hadoop
  4. tensorflow的一些函数
  5. ASP+AJAX制作无刷新新闻评论系统01
  6. python123外汇兑换计算器_Python 3.x--使用re模块,实现计算器运算实例
  7. linux proftpd 用户,[原]把boblog博客的用户导入proftpd用户认证数据库
  8. pyshp读写shapefile
  9. 利用selenium自动刷新网页
  10. Ant、 Maven 、 Gradle—Java构建工具比较
  11. IDEA2020版桌面图标变空白问题解决
  12. 小虾米闯江湖服务器维护中,小虾米闯江湖数据总结及中期注意事项一览
  13. 【漏洞复现】shiro 反序列化 (CVE-2016-4437)
  14. 智能电视局域网手机遥控实现
  15. 国际博物馆日 | 去全球摄影之家——纽约摄影展览馆领略艺术的魅力
  16. 小米技术高管崔宝秋离职,雷军武大舍友,「创业派」已所剩无几
  17. 多传感器融合感知:传感器外参标定及在线标定算法详解
  18. 计算机艺术文化主题名称,集思广益,校园文化节主题名称推荐
  19. c语言const DAN,c语言const总结
  20. 11个使用CSS制作产品展示卡片样例

热门文章

  1. Kubernetes 健康状态检查liveness和readiness
  2. 总是听到有人说AndroidX,到底什么是AndroidX?
  3. SD卡无法格式化方法介绍
  4. URAL 1742 Team building 强联通
  5. BCB:如何在BCB中使用CodeGuard
  6. 糗百文化:糗事百科的运营哲学
  7. Android实战之 上传头像 和仿QQ空间、微博发表文字和图片
  8. 单片机最小系统由几部分组成?TTL是什么?
  9. 电脑上计算机软件一直自动弹出,拨号连接自动弹出,详细教您如何解决电脑总是自动弹出...
  10. 独孤求败--之--InnoDB、MyISAM索引实现过程