首页 > 编程语言 >1027 打印沙漏(java)

1027 打印沙漏(java)

时间:2024-12-08 10:58:23浏览次数:10  
标签:1027 java 沙漏 符号 int 打印 space br

本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印

*****
 ***
  *
 ***
*****

所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。

给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。

输入格式:

输入在一行给出1个正整数N(≤1000)和一个符号,中间以空格分隔。

输出格式:

首先打印出由给定符号组成的最大的沙漏形状,最后在一行中输出剩下没用掉的符号数。

输入样例:

19 *

输出样例:

*****
 ***
  *
 ***
*****
2

太简单了,一点都不像前面的题目...

做法:直接找规律i=3累加2到能够最小组成的沙漏的值,记录此时的i,就可以开始打印沙漏了,要注意空格的输入,可以初始化空格为0,随着输出累加在打印。ps:这道题用Bufferreader和StringBuilder可以很好的减少内存用量和用时。

 


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;


public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String[] str = br.readLine().split("\\s+");
        hourglass(Integer.parseInt(str[0]), str[1].charAt(0));
    }
    public static void hourglass(int N, char M) {
        int sum = 1, j = 0;
        for(int i = 3 ; ; i += 2 ) {
            sum += i * 2;
            j = i-2;
            if(sum > N) {
                sum -= 2*i;
                break;
            }
        }
        int space = 0;
        for (int i = j; i >= 1; i -= 2, space++) {
            StringBuilder br = new StringBuilder();
            for (int l = 0; l < space; l++) {
                br.append(" ");
            }
            for (int k = 0; k < i; k++) {
                br.append(M);
            }
            System.out.println(br.toString());
        }
        space -= 2;
        for (int i = 3; i <= j; i += 2,space--) {
            StringBuilder br = new StringBuilder();
            for (int k = 0; k < space; k++) {
                br.append(" ");
            }
            for (int l = 0; l < i; l++) {
                br.append(M);
            }
            System.out.println(br.toString());
        }
        System.out.println(N - sum);
    }
}

标签:1027,java,沙漏,符号,int,打印,space,br
From: https://blog.csdn.net/2403_89522296/article/details/144317377

相关文章

  • JAVA Spring 基础
    Maven⼯程像composer的composer.json、Make的makefile文件一样,Maven项目的核心是pom.xml文件。POM(ProjectObjectModel,项目对象模型)定义了项目的基本信息,用于描述项目如何构建,声明项目依赖,等等。类的生命周期我们知道类的生命周期为装载、连接、初始化、使用和卸载,而静态代......
  • 图书管理系统|Java|SSM|JSP| 前后端分离
     【一】项目提供非常完整的源码注释【二】相关技术栈文档【三】源码讲解视频(收费)                     【其它服务】【一】可以提供远程部署安装,包扩环境【二】提供软件相关的安装包【三】如果需要提供java入门资料可咨询 ......
  • 网上报名管理系统|Java|SSM|VUE| 前后端分离
     【一】项目提供非常完整的源码注释【二】相关技术栈文档【三】源码讲解视频(收费)                     【其它服务】【一】可以提供远程部署安装,包扩环境【二】提供软件相关的安装包【三】如果需要提供java入门资料可咨询 ......
  • How do I download a file from FastAPI backend using JavaScript Fetch API in the
    题意:如何使用JavaScript的FetchAPI从FastAPI后端下载文件?问题背景:ThisismyFastAPI(python)code,whichreturnsa .ics file:这是我的FastAPI(Python)代码,它返回一个.ics文件:@app.get("/latLong/")asyncdefread_item(lat:float,long:float):mainF......
  • JavaSE的基础语法(3)
    目录一.算数运算符二.比较运算符​编辑三.赋值运算符(=)四.逻辑运算符(只能进行逻辑值间的运算)五.条件运算符六.位运算符(对整数的二进制位进行运算)本章接前两章的内容介绍运算符的相关内容运算符相关内容包括算数运算符赋值运算符比较(或关系)逻辑运算符位......
  • 【Java】——类和对象(二)
    前文回顾在类和对象(一)中,介绍了面向对象和面向过程的区别,还介绍了类的定义、使用及类是如何实例化的,再引出了this引用和几种构造方法,最后是对象的打印接下来将要介绍1.包(package)1.1为什么使用包在前文提到一般一个文件当中只定义一个类,随着我们代码的编写,类会越来越多,看起......
  • 【Java】—— 抽象类和接口
    1.抽象类1.1抽象类的概念前文讲过的普通的类,就是现实事物在Java代码中的一种“抽象的表现形式”,类里包含着属性,方法。抽象方法:将方法的实现部分忽略掉,只保留方法的名字,参数等信息(没有方法的实现逻辑)包含抽象方法的类,就称为抽象类抽象类的存在,更多是为了做出“强制限......
  • java 发送邮件 css-style 样式丢失错乱问题,有解决方案
    邮件系列java如何实现发送邮件email?java搭建属于自己的邮件服务器java发送邮件css-style样式丢失错乱问题,有解决方案java发送邮件-04-java邮件发送http接口如何定义?开源项目email:一行代码实现邮件发送前言大家好,我是老马。大家日常开发,对于邮件发送应该能不......
  • 大学生HTML期末大作业——HTML+CSS+JavaScript美食网站(食谱)
    HTML+CSS+JS【美食网站】网页设计期末课程大作业web前端开发技术web课程设计网页规划与设计......
  • 阿里巴巴LangEngine开源了!支撑亿级网关规模的高可用Java原生AI应用开发框架
    LangEngine作为阿里集团内部发起的纯Java版本的AI应用开发框架,经过充分实践,已经广泛应用于包括淘宝、天猫、阿里云、爱橙科技、菜鸟、蚂蚁、飞猪、1688、LAZADA等在内的多个业务场景。此外,LangEngine还支撑了阿里国际AI应用搭建平台的自研与上线,对集团内部的AI平台基础设施产生......