java打印正金字塔,倒金字塔和“水影”金字塔
java打印正金字塔,倒金字塔和“水影”金字塔
--------原创文章,若要转载,请注明出处
1.1
1.2从图中,我们可以发现:第1行的空格为4个,第2行是3个,第3行是2个,……,每行依次递减,直至最后一行空格数为0;而星号数目是第1行是1个,第2行是3,第3行是5,……,每行依次递增2,直至最后一行星号数为9。总结数据,我们可以得到表1.1所示的规律。
| 行数 | 空格数 | 星星数 | ||
| 1 | 4 | 5-1 | 1 | 1*2-1 |
| 2 | 3 | 5-2 | 3 | 2*2-1 |
| 3 | 2 | 5-3 | 5 | 3*2-1 |
| 4 | 1 | 5-4 | 7 | 4*2-1 |
| 5 | 0 | 5-5 | 9 | 5*2-1 |
| 规律 | 依次减1 | 5-行数 | 依次加2 | 行数*2-1 |
根据图中我们可以发现这种规律,那么接下来是不是就简单了。
3,确定空格数
由于每行空格数有着“5–行数”的规律。所以在第i行的时候,空格数就为5–i。所以我们只要把5–i个空格打印出来即可。
| 行数 | 空格数 | 星星数 | ||
| 1 | 0 | 1-1 | 9 | 5*2-1 |
| 2 | 1 | 2-1 | 7 | 4*2-1 |
| 3 | 2 | 3-1 | 5 | 3*2-1 |
| 4 | 3 | 4-1 | 3 | 2*2-1 |
| 5 | 4 | 5-1 | 1 | 1*2-1 |
| 规律 | 依次递增1 | 行数-1 | 依次递减2 | 行数*2-1(反向) |
package com.javase.demo;
import java.util.Scanner;
/**
* 金字塔
* @author Mr.Zhang
*
*/
public class Pyramid {
static Scanner input = new Scanner(System.in);
/**
* *****打印金字塔*****
* 1,确定金字塔行数
* 2,确认空格数
* 3,确认星星数
* @param args
*/
public static void main(String[] args) {
entrance();
}
/**
* 入口项
*/
public static void entrance() {
System.out.println("请选择(0--正金字塔,1--倒金字塔,2--菱形金字塔)");
String select = input.nextLine();
if(isNumber(select)){
int selectInt = Integer.parseInt(select);
switch(selectInt){
case 0:
uprightPyramid();
break;
case 1:
fallPyramid();
break;
case 2:
System.out.println("该功能尚未完善!");
break;
default:
System.out.println("请输入正确的选项!");
entrance();
break;
}
}else if(!select.equals(0) || !select.equals(1) || !select.equals(2)){
nullSuccess();
}
}
/**
* 打印正金字塔
* @param input
*/
public static void uprightPyramid() {
System.out.println("请输入行数:");
String row = input.nextLine();
if(isNumber(row)){
int rows = Integer.parseInt(row);
for(int i = 1;i <= rows;i++){ //循环输入的行数,
for(int j = 1;j <= rows - i;j++){ //输出循环每行的空格
System.out.print(" ");
}
for(int k = 1;k <= 2 * i - 1;k++){ // 输出循环每行的★
System.out.print("★");
}
System.out.println();
}
System.out.println("打印完成,线程结束");
}else{
nullSuccess();
}
}
/**
* 打印倒金字塔
*/
public static void fallPyramid(){
System.out.println("请输入行数:");
String row = input.nextLine();
if(isNumber(row)){
int rows = Integer.parseInt(row);
for(int i = rows;i >= 1;i--){
for(int j = 0;j < rows-i;j++){ //打印空格数
System.out.print(" ");
}
for(int k = 0;k < i * 2 - 1;k++){ //打印★数
System.out.print("★");
}
System.out.println();
}
System.out.println("打印完成,线程结束");
}else{
nullSuccess();
}
}
/**
* 判断是否为数字
* @param str
* @return
*/
public static boolean isNumber(String str){
boolean ok = false;
if(null != str && str.matches("^[0-9]")){
return true;
}
return ok;
}
/**
* 调用错误结果
*/
public static void nullSuccess(){
System.out.println("您输入的不是数字,一遍浪去,不听话的孩子!");
}
}
java打印正金字塔,倒金字塔和“水影”金字塔的更多相关文章
- Java 打印金字塔 or 打印带数字的金字塔 (Java 学习中的小记录)
Java 打印金字塔 or 打印带数字的金字塔 (Java 学习中的小记录) 作者:王可利(Star·星星) 效果图: 代码如下: class Star8 { public static void m ...
- Java打印金字塔问题
Java打印金字塔问题 public class 金字塔问题 { // //普通金字塔 // public static void main(String[] args) { // //先打印4层 / ...
- java实现打印正三角,倒三角
正三角代码: package BasicType; /** * 封装一个可以根据用户传入值来打印正三角的方法 * @author Administrator */ public class Enme ...
- JavaScript打印正倒直线
做了一个作业,用JavaScript打印正倒直线,突然觉得自己还是逻辑有待加强训练啊 document.write("<h3>打印倒正金字塔直线</h3>" ...
- 关于这两天研究Java打印pdf方法的记录
这两天在研究Java调用打印机打印PDF文件的方法,学到了不少东西,特别来记录一下. 关于Java打印网上最多的而且也是Java正统的打印方法就是使用PrintService,一套比較标准的打印代码例 ...
- Java打印
Java打印 import java.awt.Color; import java.awt.Font; import java.awt.FontMetrics; import java.awt.Gra ...
- Java 打印程序设计实例
3.1 打印文本 3.1.1 应用场景 假设我们需要打印一个窗体的某个文本编辑域(可能只有几行,也可能包含多页)的内容,并且每页最多打印 54 行,如何实现呢? 3.1.2 解决方法 基本思路如下:首 ...
- Java打印整数的二进制表示(代码与解析)
Java打印整数的二进制表示(代码与解析) int a=-99; for(int i=0;i<32;i++){ int t=(a & 0x80000000>>>i)&g ...
- Java中正负数的存储方式-正码 反码和补码
Java中正负数的存储方式-正码 反码和补码 正码 我们以int 为例,一个int占用4个byte,32bits 0 存在内存上为 00000000 00000000 00000000 0000000 ...
随机推荐
- SALT 加密
大家都知道,MD5加密是不可逆.但事实上,我们通常值的MD5算法.黑客的眼下破解率相对较高.也有非常多站点上干脆就提供批量解密MD5的服务,当然是收费的.http://www.xmd5.org.这里提 ...
- .NET源代码的内部排序实现
使用JetBrains的DotPeek工具能够方便地查看.net的部分源代码.于是看了一下.NET的内部是怎样实现排序的算法. 在System.Collections.Generic 命名空间下能够看 ...
- sql 中如何取出指定行: Row_Number
原文:sql 中如何取出指定行: Row_Number ROW_NUMBER (Transact-SQL) USE AdventureWorks2008R2;GOWITH OrderedOrders ...
- javascript 日期对象(date)详解
Date 对象 Date 对象用于处理日期和时间. 创建 Date 对象的语法: var myDate=new Date(); 注释:Date 对象会自动把当前日期和时间保存为其初始值. 1.date ...
- Effective C++ Item 46 当需要投你非成员函数定义模板
本文senlie原版的,转载请保留此地址:http://blog.csdn.net/zhengsenlie 经验:当我们编写一个 class template, 而它所提供之"与此 temp ...
- 编解码器的学习笔记(十):Ogg系列
Ogg是一个自由和开放的标准容器格式,由Xiph.Org 维修基金. Ogg格式不受软件专利的限制,它的目的是有效地处理高品质的流媒体和数字媒体. Ogg意指一种文件格式,能够纳入各式各样自由和开放源 ...
- php和cookie
cookie常用于用户识别,是服务器留在用户计算机中的小文件. cookie在浏览器端和服务器端的通信过程大致是这样: 浏览器向服务器作出请求(如果浏览器有cookie,将在request heade ...
- sql简单实用的统计汇总案例参考
USE [PM]GO/****** 对象: StoredProcedure [dbo].[LfangSatstics] 脚本日期: 08/24/2013 10:57:48 ******/SET ...
- CLR中的垃圾回收机制
CLR中采用代(generation)来作为其垃圾回收的一种机制,其唯一的目的是提升程序的性能.基予代的垃圾回收器有以下假设: ·对象越新,其生存周期越短. ·对象越老,其生存周期越长. ·回收堆的一 ...
- 集群管理工具Salt
集群管理工具Salt 简介 系统管理员(SA)通常需要管理和维护数以百计的服务器,如果没有自动化的配置管理和命令执行工具,那么SA的工作将会变得很繁重.例如,要给集群中的每个服务器添加一个系统用户,那 ...