本帖最后由 zx0210 于 2015-8-30 03:14 编辑
前天晚上看到一个哥们分享的打印实心菱形的代码,便自己去搞了一套代码,除了可以打印出实心的菱形以外,还能打印出空心的菱形,并且菱形的行数可以改成任意你想要的大小,经过3个小时的努力,终于对这两个方法进行了封装和优化,有兴趣的同学可以试试其他的图形,我只是来抛砖引玉的,有什么比较好看的图形都可以拿来分享一下,不多说了,上代码!(电脑上没有eclips,只能用editplus编译了)
import java.util.Scanner; //调用java的Scanner包
class PrintDiamond {
public static void main(String[] args) {
for (int x=0; x<100; x++) { //这个循环只是用来多输入几次,多打印几个菱形
System.out.print("输入菱形的的大小(1-50的奇数):");
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
Diamond.setDiamond(n); //调用Diamond类
System.out.println();
}
}
}
public class Diamond { //定义一个Diamond类
private Diamond(){} //让Diamond类无法被创建对象
public static void setDiamond(int n) {
if (n<=50) { //我发现n的值大于50以后,DOS命令行里没法打印出一个菱形,因为太大了,所以判断一下
if (n%2==1) { //经过多次证实,发现偶数行无法打印出一个完整的菱形
selectDiamond(n); //满足条件后进入菱形形状选择方法
} else {
System.out.println("无法组成菱形");
}
} else {
System.out.println("输入数值过大,DOS无法打印出完整菱形");
}
}
private static void selectDiamond(int n){ //菱形形状选择程序
System.out.print("请选择菱形的形状(实心:1,空心:2):");
Scanner sc = new Scanner(System.in);
int x = sc.nextInt();
if (x==1) {
solidDiamond(n); //输入1就调用实心菱形方法
} else if (x==2) {
emptyDiamond(n); //输入2就调用空心菱形方法
} else {
System.out.println("输入不符合要求");
}
}
//代码的重要部分就在这后面了
private static void solidDiamond(int n) {
for (int x=0; x<n; x++) { //确定行数
if (x<=n/2) {
for (int y=x; y<n/2; y++) {
System.out.print(" "); //该循环能打印一个空的倒三角
}
for (int z=0; z<=x; z++) {
System.out.print("*"+" "); //接着上面的空三角形打印一个等腰三角形
}
System.out.println();
} else {
for (int y=0; y<x-n/2; y++) {
System.out.print(" "); //该循环能打印出一个空的正三角
}
for (int z=x; z<n; z++) {
System.out.print("*"+" "); //接着上面的空三角打印一个顶朝下的等腰三角,但是底比上一个等腰三角形少1
}
System.out.println();
}
}
}
private static void emptyDiamond(int n) { //构造一个可以打印出空心菱形的方法
for (int x=n/2; x<n; x++){ //该段代码能打印出空心菱形的上半部分(包括短的对角线)
for (int y=1; y<=n; y++) {
if (y==(x+1)||y==(n-x)) {
System.out.print("*");
}else {
System.out.print(" ");
}
}
System.out.println();
}
for (int x=0; x<n/2; x++) { //该段代码能打印出空心菱形的下半部分
for (int y=1; y<=n; y++) {
if (y==(n-x-1)||y==(x+2)) {
System.out.print("*");
}else {
System.out.print(" ");
}
}
System.out.println();
}
}
}
}
|
|