JAVA的for循环打印菱形,谁能给讲一讲。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA的for循环打印菱形,谁能给讲一讲。相关的知识,希望对你有一定的参考价值。
public class Var_02
public static void main(String args[])
for(int i=1;i<=7;i+=2)
for(int kong=7;kong>i-1;kong--)
System.out.print(" ");
for(int xing=1;xing<=i;xing++)
System.out.print("* ");
System.out.println();
for(int j=1;j<=5;j+=2)
for(int kong1=1;kong1<j+3;kong1++)
System.out.print(" ");
for(int xing1=5;xing1>=j;xing1--)
System.out.print("* ");
System.out.println();
打印菱形一般分成两部分,第一部分是打印正三角(一个空白三角+星星正三角),然后是倒三角(空白三角+星星到三角)
每个三角形分别用两个for循环嵌套实现
例如:
for (int i = 1; i < 4; i++)
for (int j = 1; j <= 1 + (i - 1) * 2; j++)
System.out.print("*");
System.out.println();
两个for循环,外面的for循环控制输出的星星或空白的行,里面的for循环控制输出列。
例如上面外层for值分别是 1 2 3 。
而我们相输出的列是 1 3 5 7.....
这个数列递增值d=2 // Sn =a1+(n-1)*d
那么套用公式里面的循环就应写for(int j=1;j<=1+(i-1)*2;j++)
就能输出 1 3 5 7 个星星
倒三角也一样 套公式
倒三角的d值为-2 ,
用了这个公式,输出三角真的跟浮云一样简单 // Sn =a1+(n-1)*d 参考技术A for(int i=1;i<=7;i+=2)
for(int kong=7;kong>i-1;kong--)
System.out.print(" ");
for(int xing=1;xing<=i;xing++)
System.out.print("* ");
System.out.println();
第一个for循环是用来控制这个菱形上半部分的行数,同时这个i值还控制了菱形的宽度
第二个for循环用来输出* 前的空格数,用来将菱形定位
第三个for循环就是用来输出菱形本体的了
for(int j=1;j<=5;j+=2)
for(int kong1=1;kong1<j+3;kong1++)
System.out.print(" ");
for(int xing1=5;xing1>=j;xing1--)
System.out.print("* ");
System.out.println();
这是用来输出菱形下半部分
同样第一个for控制行数,第二个for定位,第三个for输出菱形本体追问
我不太明白for循环里面的取值范围kong>i-1和xing1>=j;还有后面的kong1++,xing1--为什么空格是递增而星号是递减
追答kong>i-1这个 减不减1无所谓 ,就象他选择输出的菱形是带空格的,这是视觉效果。
xing1>=j就和上半部分的菱形一样,是用来控制菱形的大小。
kong1++,xing1--
_ _ _ * * * * *
_ _ _ _ _ * * *
_ _ _ _ _ _ _*
这就是下半部分的本体,因为下半部分的菱形是逐渐变小所以是--,而空格组成的类三角体也需要增加来让菱形正确落位。
哦,谢谢了,这种题面试的时候真的很难,因为没有软件,只能写在纸上,发现把kong>i-1中的-1去掉之后,菱形就偏了,数了数菱形第一行明明有7个空格的,而i最大值就是7,为什么还要让i减1啊,对于取值范围怎样正确判断啊?
追答菱形偏了是因为他打出的菱形的下半部分也+1了,kong1i-1是为了让菱形能向右移一位, 你可以改成kong>i-3 kong1<j+5这样就会将整个菱形图形移出3位
追问哦,明白了,太感谢了!
本回答被提问者和网友采纳 参考技术B 路过来自:求助得到的回答 参考技术B 我想是在打印测试,假如不是就系统重装追问我是说给讲解一下整个程序,我不太明白for循环里面的意思
追答我不会的 看不到
java,for循环嵌套,打印菱形
public class t8 { public static void main(String[] args) { //上半部分 for (int m = 1; m <= 10; m++) { //输出空格 for (int n = 9; n >= m ;n--) { System.out.print(" "); } //输出* 左上 for (int n = 1; n <= m; n++) { System.out.print("*"); } //右上 for (int n = 1; n < m; n++) { System.out.print("*"); } System.out.println(); } //下半部分 for (int m = 1; m <= 9; m++) { //输出空格 for (int n = 1; n <= m ;n++) { System.out.print(" "); } //输出* 左下 for (int n = 9; n >= m; n--) { System.out.print("*"); } //右下 for (int n = 9; n > m; n--) { System.out.print("*"); } System.out.println(); } } }
以上是关于JAVA的for循环打印菱形,谁能给讲一讲。的主要内容,如果未能解决你的问题,请参考以下文章