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 ...
随机推荐
- 快速构建Windows 8风格应用5-ListView数据控件
原文:快速构建Windows 8风格应用5-ListView数据控件 本篇博文主要介绍什么是ListView数据控件.如何构建ListView数据控件. 什么是ListView数据控件? 1) Li ...
- Win8.1系统下配置搭建IIS8.5+PHP5.5.4运行环境
原文 Win8.1系统下配置搭建IIS8.5+PHP5.5.4运行环境 很多人喜欢用linux搭建php网页语言运行环境,但由于linux高度自定义化,经常需要root运行命令,略显高端,相对应的微软 ...
- Mysql之IN 和 Exists 用法
1.基本用法 IN:后面的子查询 是返回结果集的,换句话说执行次序和Exists()不一样.子查询先产生结果集,然后主查询再去结果集里去找符合要求的字段列表去.符合要求的输出,反之则不输出. Exis ...
- Spring IOC之Bean 概述
1.Bean概述 一个Spring IOC容器管理一个或者多个bean.这些bean是根据你提供给容器的配置数据信息创建的,例如XML形式的的定义. 在容器内部,这些bean的定义表示为BeanDef ...
- PLSQL-Developer数据库连接工具使用方法
PLSQL-Developer数据库连接工具使用方法 该方法适用于本机未安装Oracle客户端的情况下如何让连接到数据库.经过本人亲自测试绝对可以连接.前提是您安装的版本没有问题,如您安装的版本有问题 ...
- ACE_Message_Block 学习
本文参考http://www.cnblogs.com/TianFang/archive/2006/12/30/607960.html 1. ACE_Message_Block 的length() 返回 ...
- touch命令功能
touch命令功能 touch fileA,如果fileA存在,使用touch命令可更改这个文件或目录的日期时间,包括存取时间和更改时间:如果fileA不存在,touch命令会在当前目录下新建一个 ...
- mac 下nginx加入开机启动
通过brew install nginx后设置开机启动项 sudo cp /usr/local/opt/nginx/*.plist /Library/LaunchDaemonssudo launchc ...
- MongoDB的.Net驱动
mongo的驱动主要使用了两个,即samus和官方驱动. 个人感觉差别不大,且官方驱动也支持了LinQ.但在使用DBRef的时候,发现samus的驱动似乎不太好用,并没有达到想要的效果,也许是我的使用 ...
- UML和模式应用学习笔记-1(面向对象分析和设计)
UML和模式应用学习笔记-1(面向对象分析和设计) 而只是对情节的记录:此处的用例场景为:游戏者请求掷骰子.系统展示结果:如果骰子的总点数是7,则游戏者赢得游戏,否则为输 (2)定义领域模型:在领域模 ...