从朋友的一步步布置问题,写出来的..... 故事如下,偏长,可不看直接到底拿代码哦
朋友:你可以写出圣诞树来吗?
我:可以,啪啪啪,敲出来了。
朋友:你可以写出菱形来吗?
我:可以,给我点时间,我想一下。
//网上各种找教程........
接着啪啪啪,敲出来了,交任务
朋友:你可以把两个三角形重合下变成六边形吗?
我:可以,我要想下怎么重合
// 网上找不到合适的教程,因为只用for循环。。。。。
// 费事一天半的时间,想到了我得一行一行的控制打印出来,用if可以做到
//经过无数次调试,终于打印出来了六芒星(固定的),交任务
朋友:你可以把这个六芒星挖空吗?
我:这个有点难度,我想下。
//费时半天,dubug无数次想法,敲出来了。
朋友:这不是我想要的挖空,我要的是每个小三角都是连起来的。
我:好吧,我改下,
//费时两天,改出来了,用if控制每个小三角的连接线。
朋友:不错的嘛,你可以自定义吗?我想要六边形小三角的边长是多长的就是多长的?
我:可以,我改下
//费时半天,改成可自定义大小的,发现连接线有问题,接着,脑子死活转不过来,救助朋友,写好注释,写明问题点
//朋友一会会就跟我说,改好了。。。。。。
我:我打算把这个发网上,你帮忙发csdn吧
朋友:你自己发吧,记录下你的成长。
我:好吧,我去发,我想我百度没找到这个教程,但是可以锻炼for循环,而且接触for循环的都是新手,不容易,我就公开了。
朋友:可以,你去发吧
如果故事你看完了,相信你会有问题,为什么你的朋友这么刁难你,你心里没有怒火吗?
我的回答是:要谢谢我的朋友,因为他让我了解了for和if,这点是毋庸置疑的。我学java是爱好,我的本职是平面设计,经历过改动一套设计费时1个月,客户拿我的第三稿,所以,这都是小问题。同时也间接的说明了哦,我花费的时间比较长,第一呢,我脑子比较笨,第二呢,平时得上班啊,上班没多少时间写这些呀。
如果回答没解决到你疑惑的话,请谅解我考虑的不周全,同时也谢谢你看到这里,
重要的事情说三遍:谢谢观看!谢谢观看!谢谢观看!
public class Christmas_Tree {
public static void main(String[] arge) {
int n = 4;// 确定六芒星的边长
int day = n * 4 + 1; // 确定六角星的行数
for (int i = 1; i <= day; i++) { // 整体大循环
if (i <= n) {// 确定上三角控制的行数
for (int j = 1; j <= day - i - 1; j++) {
// 定义上三角在什么位置开始打印星的空格数量
System.out.print(" ");
}
for (int x = 1; x <= i; x++) {// 定义镂空打印星的范围及数量
if (x == 1 || x == i) {// 定义变量x在if环境下打印的位置
System.out.print("* ");
} else {// 在上述情况外的条件下 打印空格
System.out.print(" ");
}
}
System.out.println();// 换行
} else if (i <= 2 * n + 1) {// 定义上主体的行数控制范围
for (int y = 1; y < i; y++) {
// 定义上主体在什么位置开始打印星的空格数量
System.out.print(" ");
}
for (int x = 1; x <= day - i; x++) {// 定义镂空星的范围及数量
if (x == 1 || x == day - i) {// 定义镂空星的打印位置
System.out.print("* ");
} else if (i <= n + 1 && x <= day) {
// 定义上主体第一行打印内容,及打印一整行
System.out.print("* ");
} else if (x == n * 2 - i + 2) {// 控制左连接线的位置
System.out.print("* ");
} else if (x == n * 2) {// 控制右连接线的位置
System.out.print("* ");
} else {// 在上述情况外的条件下 打印空格
System.out.print(" ");
}
}
System.out.println();// 换行
} else if (i <= 3 * n + 1) {// 定义下主体的行数控制范围
for (int y = 1; y <= day - i; y++) {
// 定义下主体在什么位置开始打印星的空格数量
System.out.print(" ");
}
for (int x = 1; x <= i - 1; x++) {// 定义镂空星的范围及数量
if (x == 1 || x == i - 1) {// 定义镂空星的打印位置
System.out.print("* ");
} else if (i == n * 3 + 1 && x <= n * 3) {
// 定义下主体最后一行的打印内容,及打印一整行
System.out.print("* ");
} else if (x == i - n * 2|| x == n * 2) {
// 控制下主体的连接线,和上主体类似,可以改成上主体写的方式也可以用这种方式
System.out.print("* ");
} else {// 在上述情况外的条件下 打印空格{
System.out.print(" ");
}
}
System.out.println();// 换行
} else if (i <= day) {// 定义下三角的行数
for (int y = 1; y <= i - 2; y++) {// 定义打印位置空格
System.out.print(" ");
}
for (int x = 1; x <= day + 1 - i; x++) {// 定义打印星
if (x == 1 || x == day + 1 - i) {// 控制镂空打印
System.out.print("* ");// 打印星的数量
} else {// 范围外的条件下打印空格
System.out.print(" ");
}
}
System.out.println();// 换行 无太大意义
}
}
System.out.println();// 换行为写五角星拉开距离,无意义
}
}