
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;
}
}
}
}
老师讲过一次 可是 理解的不是很深刻 请大神 深度讲解一下 最好说出为什么,解释清晰我会提高悬赏的 在线坐等。。。。。 展开
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;
}
}
}
}
老师讲过一次 可是 理解的不是很深刻 请大神 深度讲解一下 最好说出为什么,解释清晰我会提高悬赏的 在线坐等。。。。。 展开
3个回答
展开全部
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("还有弄不懂的,你再追问");
}
}
展开全部
想必你们也写过打印出等腰三角形,这个和打印等腰三角形一个意思,菱形就是两个等腰三角形的合体,一个正三角+一个倒三角。看了你们的代码,写得复杂了。可以先打一个正三角再接着打一个倒三角就完成了,这里有一个注意的是,正三角和倒三角的底边是共用的,不要打出两条底边来就行了
追问
三角型还真没打 直接打的菱形 空心菱形我是设条件做的 只是实心的 真心想不通为什么 目测是走火了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
先占个位 下午给你解释吧 其实你就跟着程序走一两次循环就都明白了 毕竟代码很简单
追问
好的 大神 我等你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;
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询