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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 亦金亦水   /  2014-7-5 12:48  /  2686 人查看  /  24 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

亦金亦水 发表于 2014-7-7 08:33
学习了!!!!!!!!!!!

我想的都是很土鳖的方法啊~~~~
回复 使用道具 举报
心者觉也 发表于 2014-7-6 22:34
第二个思路:
整个图形抛开占位符不算,是一个轴对称图形,旋转N*90°是不会变化的,变化的只是占位符的位 ...

感觉这个有点投机的意思啊,如果多几个占位符也能很轻松实现吗
回复 使用道具 举报
心者觉也 发表于 2014-7-6 21:20
果然看起来很高端大气,没看懂的说。。。

import java.util.Scanner;
class rotateRhombus
{
        static int x=0;
        static int y=0;
        public static void main(String[] args){
                rotateRhombus(0);                                                //先打印一个原型
                rotateRhombus(1);                                                //顺时针旋转90°
                rotateRhombus(2);                                                //顺时针旋转180°
                rotateRhombus(3);                                                //顺时针旋转270°
                System.out.println("请输入一个整数");                //输入的数是顺时针旋转90°的次数
                Scanner sc = new Scanner(System.in);
                rotateRhombus(sc.nextInt());                                //打印旋转的菱形
        }
        public static void rotateRhombus(int N){
                int n = 5;                                                                //把菱形的中心放置在坐标轴的原点,5代表往四周延生5个单位.
                switch(N%4){                                                        //判断N%4的4种情况,对应不同的图形.
                        case 0:                                                                //原型或旋转360°
                                for ( y=-n ; y<=n ; y++){
                                        for( x=-n; x<=n ; x++){
                                                printRhombus(x,y,n);
                                        }
                                        System.out.println();
                                }
                                break;
                        case 1:                                                                //顺时针旋转90°
                                for ( x=-n ; x<=n ; x++){
                                        for( y=n; y>=-n ; y--){
                                                printRhombus(x,y,n);
                                        }
                                        System.out.println();
                                }
                                break;
                        case 2:                                                                //顺时针旋转180°
                                for ( y=n ; y>=-n ; y--){
                                        for( x=n; x>=-n ; x--){
                                                printRhombus(x,y,n);
                                        }
                                        System.out.println();
                                }
                                break;
                        case 3:                                                                //顺时针旋转270°
                                for ( x=n ; x>=-n ; x--){
                                        for( y=-n; y<=n ; y++){
                                                printRhombus(x,y,n);
                                        }
                                        System.out.println();
                                }
                                break;
                        default:
                }
        }
        public static void printRhombus(int x,int y,int n){//打印菱形(带标识符)
                System.out.print(((x+y<=n) && (x+y>=-n) && (x-y<=n) && (x-y>=-n))? ((x==-4 && y==-1)?"1":"*"):" ");
        }
}

我的源码,分享一下,遍历的方向要始终保持一致有点难理解
回复 使用道具 举报
遗失的美好YXJ 发表于 2014-7-10 00:30
感觉这个有点投机的意思啊,如果多几个占位符也能很轻松实现吗

确实取巧了,多几个占位符那就看有木有规律了,木有规律那就会很麻烦,果断换思路换方法
回复 使用道具 举报
X11 中级黑马 2014-7-10 11:01:35
25#
心者觉也 发表于 2014-7-10 08:59
确实取巧了,多几个占位符那就看有木有规律了,木有规律那就会很麻烦,果断换思路换方法 ...

这是我写的一个帖子,可以看一下周末技术分总结
回复 使用道具 举报
12
您需要登录后才可以回帖 登录 | 加入黑马