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 ...
随机推荐
- navigator,JS检测浏览器插件
最早由Netscape Navigator 2.0引入的navigator对象,现在已经成为识别客户端浏览器的事实标准.虽然其它浏览器也通过其它方式提供了相同或相似的信息(例如,IE中的window. ...
- ”Validation of viewstate MAC failed” 错误
”Validation of viewstate MAC failed” 错误 在ASP.NET里面,View State使用较为广泛.它作为一个隐藏字段,可以帮助服务端”记住“客户端的改变,这样客户 ...
- Mvc 下载文件
你如何将文件传送给用户取决于你最开始如何存储它,如果你将文件存入数据库,你会用流的方式将文件返还给用户,如果你将文件存在硬盘中,你只需要提供一个超链接即可,或者也可以以流的方式.每当你需要以流的方式将 ...
- Android Intent 三解决
Intent的接收处理: 1.Receiver报名 这之前已经被引入 然后看看剩下的两个接收功能上面. scheduleReceiver scheduleRegisteredReceiver: sch ...
- Android的FrameLayout使用要注意的问题
帧布局FrameLayout在Android的五大布局中是最简单的布局方式,在需要布局中的控件有重叠的情况下才使用. 今天Shamoo使用FrameLayout的时候,发现布局里面的控件设置layou ...
- asp.net mvc 中 tempdata、viewdata、viewbag生命周期(转载)
TempData ViewData ViewBag都可以用来保存数据,它们之间的区别如下: TempData保存在Session中,Controller每次执行请求的时候,会 ...
- Remoting接口测试工具
动手写一个Remoting接口测试工具 基于.NET开发分布式系统,经常用到Remoting技术.在测试驱动开发流行的今天,如果针对分布式系统中的每个Remoting接口的每个方法都要写详细的测试脚本 ...
- windows下搭建Cygwin环境
windows下搭建Cygwin环境 在上一篇博文<Android学习——windows下搭建NDK_r9环境>中,我们详细的讲解了在windows下进行Android NDK开发环境的配 ...
- Spectral Clustering
谱聚类算法(Spectral Clustering)优化与扩展 谱聚类(Spectral Clustering, SC)在前面的博文中已经详述,是一种基于图论的聚类方法,简单形象且理论基础充分,在 ...
- 职责链(Chain of Responsibility)模式
一. 职责链(Chainof Responsibility)模式 责任链模式是一种对象的行为模式.在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链.请求在这个链上传递,直到链上的 ...