问题是你开始用1星号(x = 1)而不是3来绘制沙漏的底部。

第二个问题是,沙漏的底部只有N-2线,不N-1所以循环应该从1开始,而不是0。这是因为有一个星号线在上半部分已经被绘制。

更正代码:

public static void main(String[] args) {

int N = StdIn.readInt();

int x = N*2-1;

for (int i = 0; i < N; i++) {

for (int j = i; j > 0; j--) {

StdOut.print(" ");

}

for (int k = 0; k < x; k++) {

StdOut.print("*");

}

x-=2;

StdOut.println();

}

x = 3; //

for (int i = 1; i < N; i++) { //

for (int j = i; j < N-1; j++) {

StdOut.print(" ");

}

for (int k = 0; k < x; k++) {

StdOut.print("*");

}

x += 2;

StdOut.println();

}

}

作为旁注,您可以通过进行以下观察来更短地重写此代码:

有x线绘制,所以我们可以循环从0到x包括(尊重对称性),并跳过中间线,以便不绘制它两次

对于每一行,都有要绘制的x列,它可以是空格或*。

对于每一个线,*绘制仅当当前列是min(i, x-i)和max(i, x-i)(如果我们在上部,i < x-i和如果我们在底部部分,i > x-i)。之间

码:

public static void main(String[] args) {

int N = 4;

int x = 2 * N - 1;

for (int i = 0; i <= x; i++) {

if (i == N) continue; // skip the middle-line for it not to be drawn twice

for (int j = 0; j < x; j++) {

System.out.print(j >= Math.min(i, x-i) && j < Math.max(i, x-i) ? "*" : " ");

}

System.out.println();

}

}样本输出:

*******

*****

***

*

***

*****

*******

java沙漏_Java - 沙漏相关推荐

  1. java 沙漏_Java – 沙漏

    我只是失踪了一点点.我想要的是: ******* ***** *** * *** ***** ******* 我得到了什么 ******* ***** *** * * *** ***** ****** ...

  2. 用java实现简单沙漏

    用java实现简单沙漏 public static void main(String[] args) throws Exception {System.out.println("请输入大于等 ...

  3. 【源码+教程】Java课设项目_12款最热最新Java游戏项目_Java游戏开发_Java小游戏_飞翔的小鸟_王者荣耀_超级玛丽_推箱子_黄金矿工_贪吃蛇

    马上就要期末了,同学们课设做的如何了呢?本篇为大家带来了12款热门Java小游戏项目的源码和教程,助力大家顺利迎接暑假![源码+教程]Java课设项目_12款最热最新Java游戏项目_Java游戏开发 ...

  4. 黑马程序员全套Java教程_Java基础教程_异常(含扩展)(二十三)

    黑马程序员全套Java教程_Java基础教程_异常(含扩展)(二十三) 1.1 异常概述与异常体系结构 1.2 JVM遇到异常时的默认处理方案 1.3 异常处理 1.4 异常处理之try--catch ...

  5. java编写打印沙漏_打印沙漏编程总结

    7-1 打印沙漏 (20 分) 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 ***** *** * *** ***** 所谓" ...

  6. 普罗米修斯监控java项目_java学到什么程度可以出去实习?

    把基础的知识学完,然后再学个框架,比如常见的SSH,SSM之类的,自己能用这个框架做个简单的项目,就可以了 简单的来说就是把下方的视频教程学完就可以找工作了(需要完整的资料可以找up) Java零基础 ...

  7. python绘制图形沙漏_sandglass(沙漏)——一个让人解脱的python时间处理库

    2014年六一儿童节那天的时间戳是多少? 2014年六一儿童节那天是星期几? datetime对象转成字符串后面往往带小数点,即微秒,而我存到数据库是不需要微秒的,怎么搞? 从配置中读取.网络中传输. ...

  8. 用python输出沙漏_sandglass(沙漏)——一个让人解脱的python时间处理库

    2014年六一儿童节那天的时间戳是多少? 2014年六一儿童节那天是星期几? datetime对象转成字符串后面往往带小数点,即微秒,而我存到数据库是不需要微秒的,怎么搞? 从配置中读取.网络中传输. ...

  9. 基于M5StickC Plus的可定时电子沙漏电子沙漏(LCD+软SPI+Arduino/C++)

    目录 项目介绍 硬件介绍 开发环境搭建 硬件结构及说明 软件结构及说明 软SPI驱动类 LED矩阵操作类 矩阵沙的动态效果计算 电子沙漏顶层类 硬件定时器(及中断服务)与非阻塞延时函数 硬件定时器 非 ...

最新文章

  1. python基础常用语句-Python语言的一些基本常用语句
  2. 常见的几种网络抓包及协议分析工具
  3. 反欺骗:从黑客时代的神话说起
  4. Linux学习笔记(一):Linux介绍
  5. 电脑通过android手机上网
  6. 用dw做html表格边框,Dreamweaver怎么设计彩色边框的表格?
  7. 安卓图片三级缓存策略与实现
  8. Unity Shader混合模式笔记(Blend)
  9. Android toolchain - develop for Android devices
  10. 驱动开发:断链隐藏驱动程序自身
  11. jenkins下载插件失败的解决方案
  12. PAAS容器安全防护
  13. 这些衣服包包国内比国外便宜?是你想太多
  14. out.flush()
  15. 2021年【大学生Python学习】社区小博主【孤寒者】的年度总结
  16. 开源自助BI工具,傻瓜式BI分析,支持多种数据源
  17. Ear Clipping算法简介
  18. 使用机器学习做DGA域名识别
  19. Dart list数组集合类型
  20. (转载)常见的程序员健康问题

热门文章

  1. 深入浅出Dcoker学习摘要
  2. gzip解析 python
  3. 【WIFI】mtk7621驱动
  4. [Ljava.lang.String是什么意思+解决方法
  5. 代码(一) 进制转换
  6. string indices must be integers
  7. mac上tflite编译
  8. 发送和接收电子邮件时的相关协议以及流程
  9. cocos creator 飞翔的小鸟
  10. SSH札记(struts 2)