A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© cyc523633157 中级黑马   /  2014-8-8 14:06  /  3221 人查看  /  23 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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


这个用循环怎么打印出来。

23 个回复

倒序浏览
本帖最后由 黄霄仪 于 2014-8-8 16:36 编辑

//可变长度的菱形,这应该就是你想要的结果
public class Test {
        public static void main(String[] args) {
                Test.lingxing(15);
        }

        public static void lingxing(int n) {
                if (n % 2 == 0) {
                        System.out.println("不能为偶数");
                } else {
                        int u = n / 2 + 1;// 上半部分的行数
                        //打印上面一排字符*
                        for(int i=1;i<=n+4;i++){
                                System.out.print("*");
                        }
                        System.out.println();
                        for (int i = 1; i <= u; i++) {
                                
                                System.out.print("* ");
                                // 打印空格
                                for (int m = 1; m <= u - i; m++) {
                                        System.out.print(" ");
                                }
                                // 打印*
                                for (int j = 1; j <= 2 * i - 1; j++) {
                                                System.out.print("*");
                                }
                                //打印后面的空格
                                for (int m = 1; m <= u - i; m++) {
                                        System.out.print(" ");
                                }
                                System.out.println(" *");
                        }

                        u = n - u;// 下半部分的行数
                        for (int i = 1; i <= u; i++) {
                                System.out.print("* ");
                                // 打印空格
                                for (int m = 1; m <= i; m++) {
                                        System.out.print(" ");
                                }
                                // 打印*
                                for (int j = 1; j <= 2 * u + 1 - 2 * i; j++) {
                                                System.out.print("*");
                                       
                                }
                                //打印后面的空格
                                for (int m = 1; m <= i; m++) {
                                        System.out.print(" ");
                                }
                                System.out.println(" *");
                        }
                        //打印下面一排字符*
                        for(int i=1;i<=n+4;i++){
                                System.out.print("*");
                        }
                }
        }
}
回复 使用道具 举报
学习了 。。。
回复 使用道具 举报
我自己做了一下,不知道是不是你想要的,你可以试一下,可能代码的效率不高,不过可以运行出来吧
class lingxing
{
        public static void main(String[] args)
        {
                dayin();
                dayin1();
                dayin();

        }

        public static void dayin(){
                for(int i=0;i<30;i++){
                        System.out.print("*");
                }
                System.out.println();
        }

        public static void dayin1(){
                for(int i=1;i<=7;i++){
                        System.out.print("*");
                       
                        for(int j=1;j<15-i;j++){
                                System.out.print(" ");
                        }
                        for(int j=1;j<=2*i-1;j++){
                                System.out.print("*");
                               
                        }
                        for(int k=15-i;k>0;k--){
                        System.out.print(" ");
                       
                        }
                        System.out.print("*");
                        System.out.println();
                }
       
                for(int i=5;i>=0;i--){
                        System.out.print("*");
                        for(int j=0;j<13-i;j++){
                                System.out.print(" ");
                        }

                        for(int j=0;j<2*i+1;j++){
                                System.out.print("*");
                        }
                        for(int k=14-i;k>0;k--){
                                System.out.print(" ");
                       
                        }
                        System.out.print("*");
                        System.out.println();
                }
        }
}

回复 使用道具 举报
学习一下
回复 使用道具 举报
学习一下,自己敲看看
回复 使用道具 举报
这要打印8个三角形把。。

点评

思路差不多就是这样=、=  发表于 2014-8-8 21:56
回复 使用道具 举报
WJN_YES 发表于 2014-8-8 16:04
我自己做了一下,不知道是不是你想要的,你可以试一下,可能代码的效率不高,不过可以运行出来吧
class lin ...

能介绍下思路就更好了
回复 使用道具 举报
我的思路是首先定义一个方法打印第一行和最后一行的*这个就用for循环,应该没问题吧。
接下来主要的就是打印菱形,我是将菱形分为两个部分上面的7行这里叫做正三角,和下面的6行这里叫做倒三角。
首先说一下正三角,第一层循环是控制行,一共7行,里面的两个循环都是用来控制列的,一个控制空格,一个控制
“*”其实主要就是看列和行的关系,比如第一行有1个*,第二行有3个,以此下去找到了控制*的条件2*i-1,空格的控制就是第一行*号的左边有14个空格,第二行13个空格,所以控制空格的条件就是15-i,综上就是控制空格的条件和循环的结构找对了就没问题了,你可以在看看,可以少弄几行和几列,找找规律理解一下。
回复 使用道具 举报
这种题目怎么做,唉愁这种题了,没有逻辑思维

点评

整体不会做 就慢慢分解 一步步来 转化为自己会的咯 开始初学时看见一空心菱形 打印出来代码不是一般的长= =!  发表于 2014-8-8 21:57
回复 使用道具 举报
我晕,学习了,,,,
回复 使用道具 举报
来学习了!!!
回复 使用道具 举报
这图形还好点  楼猪可以试下打印一个空心的菱形~ ~  那个才叫痛苦
回复 使用道具 举报
和空心菱形比这个还好了...
回复 使用道具 举报
学习学习
回复 使用道具 举报
这种图形打印有什么技巧么?
还是只能拆解图形后一个一个循环打印
回复 使用道具 举报
知识回顾,自己又敲了一遍
回复 使用道具 举报
学习了,自己练习下
回复 使用道具 举报
学习一下,自己敲看看
回复 使用道具 举报
方法确实很多
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马