黑马程序员技术交流社区

标题: 【满屏星星代码】我胡汉三又回来啦~满天都是小星星~~ [打印本页]

作者: kvieta丶心灵    时间: 2015-4-27 00:22
标题: 【满屏星星代码】我胡汉三又回来啦~满天都是小星星~~
本帖最后由 kvieta丶心灵 于 2015-4-27 00:27 编辑

前不久刚辞职然后来到北京,本来打算入黑马的,但是担心自己底子薄所以抱了传智基础班,准备6月考黑马!!废话不多说,代码如下:

import java.awt.Robot;//导入延迟所在的包
import java.util.Scanner;//导入键盘录入所在的包

class StarRowGen
{
        public void CallStar(int starRowGen,int starColumGen)throws Exception//延迟异常处理机制
        {
                int a;//定义一个变量存储随机数
                Robot r = new Robot();//创建对象(用于延迟命令)
                for (int x=0;x<=starRowGen;x++)//循环嵌套这个不用解释了吧^_^(控制生成星星的行)
                {                                                                                //Math.random()将生成一个大于等于 0.0 且小于 1.0 的伪随机 类型为double值
                        a=(int)(Math.random()*1000+1);//随机数[m,n]的公式:Math.random()*(n-m+1)+m;把生成的随机数强制转换为int型然后赋值给a
                                for (int y=0;y<=starColumGen;y++)//控制生成星星的列
                                {
                                        a=(int)(Math.random()*1000+1);
                                        if (a%8==0)//控制星星之间的间隔 为什么除以8?因为一个数除以8取得的余数有0 1 2 3 4 5 6 7 星星之间的间隔不要太宽。根据算法而定。
                                        {
                                        System.out.print("★");//当余数为0时打印一次星星
                                        }
                                        else
                                        System.out.print("  ");//当余数为其他是打印两个空格,记住,是随机生成的数。
                                }
                                System.out.println();
                                r.delay(15);//每生成一行延迟15毫秒 这样能让肉眼有更好的观赏性
                }
        }
}

class ManTianXing
{
        public static void main(String[] agrs)throws Exception
        {
                StarRowGen srg=new StarRowGen();//创建星星对象
                Scanner sc=new Scanner(System.in);//创建键盘录入对象
                System.out.println("请输入要显示的星星行数(建议数字相对小点):");               
                int n=sc.nextInt();//录入数据赋值给n
                System.out.println("请输入要显示的星星列数(建议数字相对小点):");               
                int m=sc.nextInt();//录入数据赋值给m
        
                if (n<=0||m<=0)//判断用户输入的数是否小于等于0,是将随机给一个数进行生成
                {
                        System.out.println("您输入的数据可能会引起不必要的BUG\n程序将自动为您初始化一个数。");        
                        System.out.println("请您慢慢欣赏~~");        
                        srg.CallStar(1000,36);
                }
                else
                {
                        System.out.println("请您慢慢欣赏~~");        
                        srg.CallStar(n,m);
                }        
        }
}
按道理是可以控制行和列的,但是输出的时候总是有小BUG,求大神解决......
所谓无图不真相:





作者: kvieta丶心灵    时间: 2015-4-27 00:23
1L我就霸占了!!~
作者: 突然世界晴    时间: 2015-4-27 17:17
不要太吊!!!
作者: 罗韬    时间: 2015-4-27 22:45
满脑袋的星星
作者: kvieta丶心灵    时间: 2015-4-28 12:58
突然世界晴 发表于 2015-4-27 17:17
不要太吊!!!

{:3_50:}                        
作者: kvieta丶心灵    时间: 2015-4-28 12:59
罗韬 发表于 2015-4-27 22:45
满脑袋的星星

:#                                    




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2