CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

强烈要求高手帮帮我这个菜鸟

楼主gf_iLoveU(True)2004-09-02 12:52:03 在 Java / J2SE / 基础类 提问

下面是一段我写的程序(烂,请随便笑话)   运行的时候提示  
   
  Exception   in   thread   "main"   java.lang.StackOverflowError  
   
  好像是什么栈溢出,请高手帮忙看看问题出在哪里好么?我哪里写错了呢?我自己试着调试了一下  
  computeRandomString(3,20,"red")的返回值是正确的啊?为什么就不能直接输出那??  
   
  谢谢了!  
   
   
  /*  
    *   Compute.java  
    *  
    *   Created   on   2004年9月2日,   下午12:29  
    */  
   
  /**  
    *  
    *   @author     Administrator  
    */  
  import   java.util.*;  
   
  public   class   Compute   {  
           
          /**   Creates   a   new   instance   of   Compute   */  
          public   Compute()   {  
          }  
           
          int   insRed,   insBlue;  
          //int[][]   tableDisplay;  
          int[]   tempRed   =   new   int[7];  
           
          /**  
            *   @param   args   the   command   line   arguments  
            */  
           
          public   String   computeRandomString(   int   x,   int   y,   String   flag   ){  
          String   randomString   =   "";  
          int   randomRed,randomBule;  
   
          if(flag   ==   "red"){  
                  for(int   i=1;i<8;i++){        
   
                  randomString   +=   buildRandomInt(   x,   y,   i   -1   )   +   "   ";  
                  }  
          }  
                  else{  
                  };  
          return   randomString;  
          }  
           
          public   int   buildRandomInt(   int   x,   int   y,   int   z){  
   
          int   radomTemp   =   0;  
   
          Random   rad   =   new   Random();  
   
          radomTemp   =   rad.nextInt(y-x);  
          radomTemp   +=   x;  
   
          for(int   i=0;i<tempRed.length;i++){  
                  if(radomTemp   ==   tempRed[i]){  
                          radomTemp   =   buildRandomInt(   x,   y,   z   );  
                          i   =   z   +   1;  
                  }        
          };  
          tempRed[z]   =   radomTemp;  
          return   radomTemp;  
      }  
           
          public   static   void   main(String[]   args)   {  
                  //   TODO   code   application   logic   here  
                  Compute   c   =   new   Compute();  
                   
                  System.out.println(c.computeRandomString(3,20,"red"));  
          }  
           
  }  
  问题点数:100、回复次数:14Top

1 楼ntzls()回复于 2004-09-02 13:07:12 得分 0

radomTemp   =   buildRandomInt(   x,   y,   z   );  
  仔细检查非递归部分的基本条件Top

2 楼gf_iLoveU(True)回复于 2004-09-02 13:07:24 得分 0

请大家帮帮忙谢谢啦Top

3 楼gf_iLoveU(True)回复于 2004-09-02 13:09:01 得分 0

仔细检查非递归部分的基本条件?  
  什么意思啊?能详细的说一下么??Top

4 楼kingfish(工作很忙,很少来csdn...)回复于 2004-09-02 13:15:05 得分 0

先把   ==换成   equals  
   
  显然死在buildRandomInt中了,仔细看看你修改循环变量i的地方Top

5 楼craks()回复于 2004-09-02 13:18:40 得分 0

if(flag   ==   "red")  
  改为:if(flag.equals("red"))  
   
  Top

6 楼xxben(001)回复于 2004-09-02 13:20:46 得分 0

我运行了一下,没有报栈溢出异常啊  
  Top

7 楼jokerjava(冷血)回复于 2004-09-02 13:21:40 得分 0

buildRandomInt   无穷递归了Top

8 楼gf_iLoveU(True)回复于 2004-09-02 13:23:03 得分 0

我的想法很简单,随机从3-20中取出7个数字,但是都不重复,所以我想取出一个后判断是否在数组tempRed中,如果在就再重新成城随机数,再判断,不过不在就把这个数放到数组中,供下一个数判断,我就这么瞎写的,问题到底出在哪里呢?修改if(flag   ==   "red")  
  改为:if(flag.equals("red"))好像没有什么效果。Top

9 楼gf_iLoveU(True)回复于 2004-09-02 13:24:12 得分 0

xxben(chacha)??你运行没有问题??难道我重新启动一下就没有问题了?Top

10 楼007JavaKing(乖乖咙的咚)回复于 2004-09-02 13:24:32 得分 0

无穷第归   栈满了Top

11 楼xxben(001)回复于 2004-09-02 13:25:09 得分 0

这并不是递归啊?!Top

12 楼kingfish(工作很忙,很少来csdn...)回复于 2004-09-02 13:28:57 得分 100

问题在这  
  Random   rad   =   new   Random();  
  你每次new,Random用当前时间做种子,所以同1ms中产生的随机数相同  
  而1ms足够你的stack   overflow了。  
  Top

13 楼kingfish(工作很忙,很少来csdn...)回复于 2004-09-02 13:30:13 得分 0

有时恰好两次new时不在同一ms,所以正常,就像xxben这样没赶上...Top

14 楼gf_iLoveU(True)回复于 2004-09-02 13:32:55 得分 0

谢谢楼上,问题解决了,我把Random的实例声明成类里就好了,十分感谢。Top

相关问题

  • 强烈要求csdn添加“菜鸟创意 高手出击”版块,内有一个比较有趣的创意,请给我回应,谢谢。
  • 强烈要求通告C++。。。。。。
  • 强烈要求sinox2006release()道歉!!!
  • 强烈要求把字体变大!!!!
  • 强烈要求恢复自动邮件!!!!
  • 强烈要求不能分家!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  • 强烈要求结贴,来者有分
  • 强烈要求新开 Vs2005 专区
  • 强烈要求 Sunmast(速马/MVP) 下课?
  • 强烈要求封杀sinoxvs2008,太烦了!

关键词

  • compute

得分解答快速导航

  • 帖主:gf_iLoveU
  • kingfish

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo