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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 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,求大神解决......
所谓无图不真相:




评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1

查看全部评分

5 个回复

倒序浏览
1L我就霸占了!!~
回复 使用道具 举报
不要太吊!!!
回复 使用道具 举报
满脑袋的星星
回复 使用道具 举报

{:3_50:}                        
回复 使用道具 举报

:#                                    
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马