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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 江华 中级黑马   /  2013-3-11 16:33  /  1448 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 江华 于 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. }
复制代码

3 个回复

倒序浏览
哦,谢谢!
问题解决了

是我们的记事本默认的编码是 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. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 李辉 于 2013-3-11 16:51 编辑

15行里的方法suijishu 调用得加():suijishu() ,
第25行:你这个程序里只定义了一个suijishu,不过是方法名,不是变量。不知道你想在这里返回什么,如果要返回一个随机数,那应该returrn rint; 如果return suijishu() ,那就死循环了,不管怎样也不能return suijishu; 这是个语法错误,通不过编译的。
回复 使用道具 举报
递归调用函数的时候  函数名后面都没有加括号,而且逻辑也有问题
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马