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

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

那个三角形的,正等腰和反等腰出来了,但是旋转90度,谁有思路呀?

24 个回复

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

这是我写的一个帖子,可以看一下周末技术分总结
回复 使用道具 举报
遗失的美好YXJ 发表于 2014-7-10 00:30
感觉这个有点投机的意思啊,如果多几个占位符也能很轻松实现吗

确实取巧了,多几个占位符那就看有木有规律了,木有规律那就会很麻烦,果断换思路换方法
回复 使用道具 举报
心者觉也 发表于 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":"*"):" ");
        }
}

我的源码,分享一下,遍历的方向要始终保持一致有点难理解
回复 使用道具 举报
心者觉也 发表于 2014-7-6 22:34
第二个思路:
整个图形抛开占位符不算,是一个轴对称图形,旋转N*90°是不会变化的,变化的只是占位符的位 ...

感觉这个有点投机的意思啊,如果多几个占位符也能很轻松实现吗
回复 使用道具 举报
亦金亦水 发表于 2014-7-7 08:33
学习了!!!!!!!!!!!

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

学习了!!!!!!!!!!!
回复 使用道具 举报
本帖最后由 心者觉也 于 2014-7-6 22:40 编辑

第二个思路:
整个图形抛开占位符不算,是一个轴对称图形,旋转N*90°是不会变化的,变化的只是占位符的位置。
---定义一个StringBuffer数组,每一行是一个StringBuffer()对象,整个数组表示的是除开占位符的基本图形。

---在基本图形的基础上,利用StringBuffer的replace(int begin, int end, String str)方法来把关键的位置替换成占位符。

回复 使用道具 举报
遗失的美好YXJ 发表于 2014-7-5 22:00
遍历整个区域,然后用线性规划的方法选择一个菱形的区域(在四条线内)
旋转的话,菱形不动,旋转坐标轴.(以菱形 ...

果然看起来很高端大气,没看懂的说。。。
回复 使用道具 举报
心者觉也 发表于 2014-7-5 14:12
我有一个比较笨的思路,这个图形也就四个方向
你可以画4个,用N%4来判断显示哪一个 ...

:handshake我也是用的这个比较笨的方法。。。
回复 使用道具 举报
遗失的美好YXJ 发表于 2014-7-5 22:00
遍历整个区域,然后用线性规划的方法选择一个菱形的区域(在四条线内)
旋转的话,菱形不动,旋转坐标轴.(以菱形 ...

感觉你的方法比较高端!
回复 使用道具 举报
我有个疑问就是,看别人写的代码很能理解,要自己写,完全不知道怎么下手,只知道个大概
回复 使用道具 举报
把坐标轴旋转试试
回复 使用道具 举报
跑步先生 发表于 2014-7-6 12:34
能看下你的源代码吗?

这个,怕被扣技术分,还是不要了吧.7.8号给.再说我的源码也很呆.
用N来旋转做的不好.用switch做的
回复 使用道具 举报
遗失的美好YXJ 发表于 2014-7-5 22:00
遍历整个区域,然后用线性规划的方法选择一个菱形的区域(在四条线内)
旋转的话,菱形不动,旋转坐标轴.(以菱形 ...

能看下你的源代码吗?
回复 使用道具 举报
亦金亦水 发表于 2014-7-6 09:12
学习了!!!!!!

还不知道我代码写的对不对,你写好了咱们可以交流交流
回复 使用道具 举报
遗失的美好YXJ 发表于 2014-7-5 22:00
遍历整个区域,然后用线性规划的方法选择一个菱形的区域(在四条线内)
旋转的话,菱形不动,旋转坐标轴.(以菱形 ...

学习了!!!!!!
回复 使用道具 举报
跑步先生 发表于 2014-7-5 21:38
不过,这是个关于循环和判断的语句,不过,我就将它分解了上下两个三角形,不过,我在画翻转的时候,存在换 ...

学习了!!!!!!
回复 使用道具 举报
找点规律好点
回复 使用道具 举报
本帖最后由 遗失的美好YXJ 于 2014-7-5 23:42 编辑

遍历整个区域,然后用线性规划的方法选择一个菱形的区域(在四条线内)
旋转的话,菱形不动,旋转坐标轴.(以菱形中心点为坐标原点,逆时针旋转坐标轴,但是遍历的方向4个图都要相同)
我是这样做的,但是不知道对不对.看了大家怎么会有空格的?不是很懂

菱形顺时针旋转原理图.png (113.35 KB, 下载次数: 110)

菱形顺时针旋转原理图.png
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马