黑马程序员技术交流社区
标题:
试着做了个打印心形的小程序
[打印本页]
作者:
thoris
时间:
2015-4-14 20:35
标题:
试着做了个打印心形的小程序
<div class="blockcode"><blockquote>/**
* 自定义一个数x,打印出一个2x+1的区域,
*自定义两个字符,通过字符差异显示出心形。
*作用:1、可以打印空心心形
* 2、打印实心心形
* 3、自定义不同字符,达到不同的显示效果
* 修改记录:
* 1、最初只是测试做一个空心菱形,菱形上下对称,所以一开始要输入一个奇数。
* 2、做完之后发现要是把菱形上半部分复制,下半部分放大,就是个心形了,于是改成做一个心形。
* 3、菱形直接复制和放大后的心形,棱角太分明,于是把心形上部和两边修了一下,比较圆润。
* 4、此时发现如果输入数字小于7,形状不能体现,所以改成要大于6.
* 5、加入自定义字符功能
* 6、发现不能输入空格,于是只好用1和2来代替一个空格和两个空格
*
*/
import java.util.Scanner;
public class Heart2
{
public static void main(String [] args)
{
Scanner input=new Scanner(System.in);
int num;
System.out.println("请输入一个大于6的奇数");//宽度的一半,大于6是为了显示好看
num=input.nextInt();
while(num<6||num%2==0){
System.out.println("请输入一个大于6的奇数");
num=input.nextInt();
}
System.out.println("请输入一个字符或汉字");//自定义字符,不能定义空格,所以用1、2替代
String str1=input.next();
if(str1.equals("1")){
str1=" ";
}
if(str1.equals("2")){
str1=" ";
}
System.out.println("请输入一个字符或汉字");
String str2=input.next();
if(str2.equals("1")){
str2=" ";
}
if(str2.equals("2")){
str2=" ";
}
for(int x=(num+1)/2,y=0;x>1&&y<(num+1)/2;x--,y++){//上半部分,
if(y==0||y==1){//第一行要全部打出,第二行为了避免棱角分明,所以也全部打印
print(2*num+1,str1);//调用静态方法
System.out.println();
}
if(y>1){
print(x,str1);
print(2*y-1,str2);
print(x,str1);
print(x+1,str1);//这部分可以合并,但是是从两个菱形的上半部演化而来,保留比较好理解
print(2*y-1,str2);
print(x,str1);
System.out.println();
}
}
for(int x=2,y=num-1;x<=num+1&&y>=0;x++,y--){//下半部分
if(x==2){//初始值为2,是因为两边也要削平,避免棱角
print(x,str1);
print(y-2,str2);
print(3,str1);
print(y-2,str2);
print(x,str1);
System.out.println();
}
if(x>2&&y>0){
print(x,str1);
print(2*y-1,str2);
print(x,str1);
System.out.println();
}
if(y==0){//最后全打印
print(2*num+1,str1);
System.out.println();
}
}
input.close();
}
//有参无返回的静态方法,打印x个字符串str
static void print(int x,String str){
for(int i=0;i<x;i++){
System.out.print(str);
}
}
}
复制代码
效果图.JPG
(104.17 KB, 下载次数: 8)
下载附件
2015-4-14 20:34 上传
刚学完面向对象部分,很多还不太理解。多多交流。
作者:
thoris
时间:
2015-4-14 20:37
这个如果在Eclipse里显示出来经常会有问题。。。命令行里反而效果比较好。
作者:
我_杰仔
时间:
2015-4-14 21:35
不错哦,楼主加油
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2