java输出菱形的解析

求大神来帮我解析一下这个代码publicclassExercise03{publicstaticvoidmain(String[]args){intsize=19;int... 求大神来帮我解析一下这个代码

public class Exercise03 {

public static void main(String[] args){
int size = 19;
int centerNum = (size/2)+1;
int startNum = centerNum;
int endNum = centerNum;
boolean more = true; //#号增多的方向
for(int a=1;a<=size;a++){
for(int i=1;i<=size;i++){
if(i>=startNum&&i<=endNum){
System.out.print("# ");
}else{
System.out.print(" ");
}
}
System.out.println();
if(more){
startNum -= 1;
endNum += 1;
}else{
startNum += 1;
endNum -= 1;
}

if(startNum==1){
more = false;
}

}

}

}
老师讲过一次 可是 理解的不是很深刻 请大神 深度讲解一下 最好说出为什么,解释清晰我会提高悬赏的 在线坐等。。。。。
展开
 我来答
qq1096195805
2014-08-08 · 超过16用户采纳过TA的回答
知道答主
回答量:76
采纳率:0%
帮助的人:41.9万
展开全部



public static void main(String[] args) {
// 需要打一个多少行的菱形
int size = 5;
// 算出菱形的中间值
// (貌似size是偶数的话,打印出来的不是菱形,这个你们老师有没有提到?)
int centerNum = (size / 2) + 1;
// 两个控制打印#还是空格的变量,没什么解释的
int startNum = centerNum;
int endNum = centerNum;
// #号增多的方向,一个标记
boolean more = true;
// 这个for用来控制行
for (int a = 1; a <= size; a++) {
// 这个for用来控制行中需要打印什么
for (int i = 1; i <= size; i++) {
// 满足条件,就打印#,否则就打印空格
if (i >= startNum && i <= endNum) {
System.out.print("# ");/* #号后面有个空格,为了排版 */
} else {
System.out.print(" ");/* 两个空格,为了排版 */
}
}
// 换行
System.out.println();
// 改变 变量的值,控制打印
if (more) {
startNum -= 1;
endNum += 1;
} else {
startNum += 1;
endNum -= 1;
}
// 打印到中间那行之后,改变标记more的值
if (startNum == 1) {
more = false;
}
}
System.out.print("还有弄不懂的,你再追问");
}
}
没事儿写两篇
2014-08-08 · 超过11用户采纳过TA的回答
知道答主
回答量:39
采纳率:0%
帮助的人:26.1万
展开全部
想必你们也写过打印出等腰三角形,这个和打印等腰三角形一个意思,菱形就是两个等腰三角形的合体,一个正三角+一个倒三角。看了你们的代码,写得复杂了。可以先打一个正三角再接着打一个倒三角就完成了,这里有一个注意的是,正三角和倒三角的底边是共用的,不要打出两条底边来就行了
追问
三角型还真没打  直接打的菱形 空心菱形我是设条件做的 只是实心的 真心想不通为什么 目测是走火了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
czd0001693
2014-08-08 · TA获得超过202个赞
知道小有建树答主
回答量:532
采纳率:0%
帮助的人:251万
展开全部
先占个位 下午给你解释吧 其实你就跟着程序走一两次循环就都明白了 毕竟代码很简单
追问
好的 大神 我等你T T  是在是纠结  有点转不过来弯 目测是走火了
追答
//定义菱形宽度
int size = 19;
//因为是菱形 所以顶端一定是中轴线
int centerNum = (size/2)+1;
//判断打印#位置的两个临界值
int startNum = centerNum;
int endNum = centerNum;
//判断是否到达菱形最宽
boolean more = true; //#号增多的方向
//菱形行循环
for(int a=1;a=startNum&&i<=endNum){
System.out.print("# ");
}else{
System.out.print(" ");
}
}
//一行结束后换行
System.out.println();
//未达到最宽时#依次增多 ,达到后依次减少
if(more){
startNum -= 1;
endNum += 1;
}else{
startNum += 1;
endNum -= 1;
}
//判断是否达到最宽 用 endNum==size判断size等于偶数也是菱形
if(startNum==1){
more = false;
}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式