java 怎样写出一个菱形程序?空心和实心

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 怎样写出一个菱形程序?空心和实心相关的知识,希望对你有一定的参考价值。

* * *** * * ***** * * *** * * * *

java打印菱形通过二维数组来打印,实例如下:

int hangshu = 11;
int yiban = hangshu / 2 + 1;
int yibanduo = hangshu / 2;
System.out.println("空心菱形:");
for(int k = 1;k <= yiban;k++)
for(int i = 1;i <= (yiban - k);i++)
System.out.print(" ");

System.out.print("*");
for(int i = 1;i <= ( (k - 2) * 2 + 1);i++)
System.out.print(" ");

if(k != 1)
System.out.print("*");

System.out.println();

for(int k = yibanduo;k >=1;k--)
for(int i = 1;i <= (yiban - k);i++)
System.out.print(" ");

System.out.print("*");
for(int i = 1;i <= ( (k - 2) * 2 + 1);i++)
System.out.print(" ");

if(k != 1)
System.out.print("*");

System.out.println();



System.out.println("实心菱形:");
for(int i = 1;i <= hangshu;i++)
if(i <= hangshu/2 + 1)
for(int k = 1;k <= hangshu/2 + 1- i;k++)
System.out.print(" ");

for(int k = 1;k <= i;k++)
System.out.print("* ");

System.out.println();
else
for(int k =1;k <= (i -(hangshu/2 + 1));k++)
System.out.print(" ");

for(int k = 1;k <= (2 *(hangshu/2 + 1) - i);k++)
System.out.print("* ");

System.out.println();


结果如下:

参考技术A 实心

import java.util.Scanner;
public class LingXing

public static void main(String[] args)

Scanner sc = new Scanner(System.in);
System.out.println("请输入菱形变长:");
int num = sc.nextInt();
for (int i=1;i<=num;i++)

for(int j=1;j<num-i+1;j++)

System.out.print(" ");

for(int k=1;k<2*i;k++)

System.out.print("*");
System.out.println("");

for(int i=1;i<num;i++)

for(int j=1;j<=i;j++)

System.out.print(" ");

for(int k=1;k<2*(num-i);k++)

System.out.print("*");

System.out.println("");




空心
import java.util.Scanner;
public class LingXKX

public static void main(String[] args)

Scanner sc = new Scanner(System.in);
System.out.println("请输入菱形变长:");
int num =sc.nextInt();
for (int i=1;i<=num;i++)

for(int j=1;j<num-i+1;j++)

System.out.print(" ");

int count =2*i-1;
for(int k=0;k<count;k++)

if(0==k||count-1==k)
System.out.print("*");
else
System.out.print(" ");

System.out.println("");

for(int i=1;i<num;i++)

for(int j=1;j<=i;j++)

System.out.print(" ");

int count = 2*(num-i)-1;
for(int k=0;k<count;k++)

if(k==0||k==count-1)
System.out.print("*");
else
System.out.print(" ");
System.out.println("");


参考技术B 像这一类的问题,我一般做一个二维数组
在将要打印的图形,电子表格中写出,再找行列的关系,数组中[i],[j]对应的加减,就能打出来你想要的图形,你试试本回答被提问者和网友采纳
参考技术C http://zhidao.baidu.com/question/323654175.html?oldq=1
这个问题我以前回答过, 请点击去看

PHP练习--用for循环打印空心菱形

思路:1,写出代码打印实心的金字塔

         2、修改代码,把金字塔抛空

   3、修改代码,把金字塔倒转

   4、修改倒转后的代码,把金字塔抛空

   5、修改代码,把具体的数进行参数化

1、写出代码打印实心金字的金字塔:

技术分享
<?php
    //$n=5;
    for($i=1;$i<=5;$i++){
        //打印空格
        for($j=1;$j<=5-$i;$j++){
            echo "&nbsp;";
        }
        //打印*号
        for($k=1;$k<=2*$i-1;$k++){
            echo "*";
        }

        echo "<br/>";
    }

?>
技术分享

 

2、

2、改善代码,把金字塔抛空

技术分享
<?php
    //$n=5;
    for($i=1;$i<=5;$i++){
        //打印空格
        for($j=1;$j<=5-$i;$j++){
            echo "&nbsp;";
        }
    //打印*号
    for($k=1;$k<=2*$i-1;$k++){
        //打印第一行后最后一行都打*连接
        if($i==1 || $i==5){
            echo "*";
        }else{
        //怎么打空格和*号的问题
            if($k==1 || $k==2*$i-1){
                echo "*";
            }else{
                echo "&nbsp;";
            }
        }
    }
    echo "<br/>";
    }

?>
技术分享

 

3、修改代码,把金字塔倒转

技术分享
<?php
    //$n=5;
    for($i=1;$i<=5;$i++){
        //打印空格
        for($j=1;$j<=5-$i;$j++){
            echo "&nbsp;";
        }
        //打印*号
        for($k=1;$k<=2*$i-1;$k++){
            //打印第一行后最后一行都打*连接
            if($i==1 || $i==5){
                    echo "*";
            }else{
                //怎么打空格和*号的问题
                if($k==1 || $k==2*$i-1){
                    echo "*";
                }else{
                    echo "&nbsp;";
                }
            }
        }
    echo "<br/>";
    }
    //倒转
    for($i=5;$i>=0;$i--){
        //打印空格
        for($j=0;$j<=5-$i;$j++){
            echo "&nbsp;";
        }
        //打印*号
        for($k=1;$k<=2*$i-3;$k++){
            echo "*";
        }
    echo "<br/>";
    }
?>
技术分享

 

4、修改倒转后的代码,把金字塔抛空,并把中间的*号去掉 修改这里的代码(if($i==1 || $i==5){ //去掉$i==5 把中间抛空)

技术分享
<?php
    //$n=5;
    for($i=1;$i<=5;$i++){
        //打印空格
        for($j=1;$j<=5-$i;$j++){
            echo "&nbsp;";
        }
        //打印*号
        for($k=1;$k<=2*$i-1;$k++){
        //打印第一行后最后一行都打*连接($i==1 || $i==5) 
            if($i==1){ //去掉$i==5 把中间抛空
                echo "*";
            }else{
                //怎么打空格和*号的问题
                if($k==1 || $k==2*$i-1){
                    echo "*";
                }else{
                    echo "&nbsp;";
            }
        }
    }
    echo "<br/>";
    }
    //倒转 抛空
    for($i=5;$i>=0;$i--){
        //打印空格
        for($j=0;$j<=5-$i;$j++){
            echo "&nbsp;";
        }
        //打印*号
        for($k=1;$k<=2*$i-3;$k++){
            //怎么打空格和*号的问题
            if($k==2*$i-3 || $k==1){
                echo "*";
            }else{
                echo "&nbsp;";    
            }
        }
    echo "<br/>";
    }
?>
技术分享

 

5、修改代码,把具体的数进行参数化 :把具体数字5改成$n=5代替,随后可以设置$n的值,可以任意放大和缩小

技术分享
<?php
    $n=5;
    for($i=1;$i<=$n;$i++){
        //打印空格
        for($j=1;$j<=$n-$i;$j++){
            echo "&nbsp;";
        }
        //打印*号
        for($k=1;$k<=2*$i-1;$k++){
        //打印第一行后最后一行都打*连接($i==1 || $i==5) 
            if($i==1){ //去掉$i==5 把中间抛空
                echo "*";
            }else{
                //怎么打空格和*号的问题
                if($k==1 || $k==2*$i-1){
                    echo "*";
                }else{
                    echo "&nbsp;";
                }
        }
    }
    echo "<br/>";
    }
    //倒转 抛空
    for($i=$n;$i>=0;$i--){
        //打印空格
        for($j=0;$j<=$n-$i;$j++){
            echo "&nbsp;";
        }
        //打印*号
        for($k=1;$k<=2*$i-3;$k++){
            //怎么打空格和*号的问题
            if($k==2*$i-3 || $k==1){
                echo "*";
            }else{
                echo "&nbsp;";    
            }
        }
    echo "<br/>";
    }
?>
技术分享

 

效果图:

技术分享

最后大功告成。顺便说说 ,其实编程不难,难就难在怎么样的思路,怎样去解决问题的方法。所以大家在编程的过程中善于思考。尽管花了半天的时间去想,但是最后想出来了,问题也得到解决,所以平时要多动脑动手去实践。我们的编程能力才能提高。只有实践了,东西才能被理解,知识点也掌握了。

以上是关于java 怎样写出一个菱形程序?空心和实心的主要内容,如果未能解决你的问题,请参考以下文章

用java打印菱形。

PHP练习--用for循环打印空心菱形

css怎么写出这样的空心菱形

for循环输出空心菱形的形状java

java方面 是个打印菱形的程序,本人是新手不太理解,求高手注释,详细解释一下,谢了!

UML箭头和类结构关系