黑马程序员技术交流社区

标题: 这个代码那里有问题啊? [打印本页]

作者: 江华    时间: 2013-3-11 16:33
标题: 这个代码那里有问题啊?
本帖最后由 江华 于 2013-3-11 19:55 编辑

  1. /*

  2. 问题已解决,书写有无,修改后的代码:
  3. http://bbs.itheima.com/forum.php?mod=redirect&goto=findpost&ptid=40658&pid=249507


  4. * ascii中
  5. * 数字是从48~57,A~Z是从65~90 ,a~z是97~122,
  6. * 从48~开始到122之间没有    (58~64)和(91~96)这12个数字
  7. * 我们可以生产随机数,出现没有的12个数字,那就重新再生成!
  8. * 把它们变成48+ new  Random().nextInt(74) 其中  new  Random().nextInt(74)不在(58~64)和(91~96)这12个数字之内
  9. * */

  10. class MiMaShengCheng
  11. {   
  12.     public static void main(String[] args)
  13.     {
  14.         System.out.print("看下我们随机生成的密码是什么?");
  15.         for (int i=0;i<6;i++)
  16.         System.out.print(suijishu);        
  17.     }
  18.    
  19.     public static char suiJiShu()
  20.     {
  21.            //生成随机数
  22.         Random r=new Random();
  23.         int rint=r.nextInt(74);
  24.         if((rint > 9 && rint < 17 ) ||  ( rint > 42 && rint < 49))
  25. //            不符号要求,递归调用,找到合适的结束
  26.             return suiJiShu;
  27.         else
  28. //            符合要求,返回生成的ascii对应的字符
  29.             return (char)(rint+48);   
  30.     }
  31. }
复制代码

作者: 李辉    时间: 2013-3-11 16:38
本帖最后由 李辉 于 2013-3-11 16:51 编辑

15行里的方法suijishu 调用得加():suijishu() ,
第25行:你这个程序里只定义了一个suijishu,不过是方法名,不是变量。不知道你想在这里返回什么,如果要返回一个随机数,那应该returrn rint; 如果return suijishu() ,那就死循环了,不管怎样也不能return suijishu; 这是个语法错误,通不过编译的。
作者: 江华    时间: 2013-3-11 16:45
哦,谢谢!
问题解决了

是我们的记事本默认的编码是 utf-8了
我把它变成ANSI以后,就没事了,一下是可以运行的代码:
  1. /*
  2. * ascii中
  3. * 数字是从48~57,A~Z是从65~90 ,a~z是97~122,
  4. * 从48~开始到122之间没有        (58~64)和(91~96)这12个数字
  5. * 我们可以生产随机数,出现没有的12个数字,那就重新再生成!
  6. * 把它们变成48+ new  Random().nextInt(74) 其中  new  Random().nextInt(74)不在(58~64)和(91~96)这12个数字之内
  7. * */
  8. import java.util.Random;
  9. class MiMaShengCheng
  10. {       
  11.         public static void main(String[] args)
  12.         {
  13.                 System.out.println("看下我们随机生成的密码是什么?");
  14.                 for (int i=0;i<6;i++)
  15.                 System.out.print(suiJiShu());               
  16.         }
  17.        
  18.         public static char suiJiShu()
  19.         {
  20.                    //生成随机数
  21.             Random r=new Random();
  22.             int rint=r.nextInt(74);
  23.             if((rint > 9 && rint < 17 ) ||  ( rint > 42 && rint < 49))
  24. //                    不符号要求,递归调用,找到合适的结束
  25.                     return suiJiShu();
  26.             else
  27. //                    符合要求,返回生成的ascii对应的字符
  28.                     return (char)(rint+48);   
  29.         }
  30. }
复制代码

作者: 郑元皓    时间: 2013-3-11 19:31
递归调用函数的时候  函数名后面都没有加括号,而且逻辑也有问题




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