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();


打印菱形其实很简单,记得高中数学的公式么 Sn =a1+(n-1)*d
打印菱形一般分成两部分,第一部分是打印正三角(一个空白三角+星星正三角),然后是倒三角(空白三角+星星到三角)

每个三角形分别用两个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循环打印菱形,谁能给讲一讲。的主要内容,如果未能解决你的问题,请参考以下文章

java,for循环嵌套,打印菱形

用“for”循环在java中打印出菱形图案

Java学习之for循环打印菱形练习

Java基础(利用for循环打印输出菱形)

.NET2005都有哪些新功能?谁能给我讲一讲啊?

用java打印菱形。