为了账号安全,请及时绑定邮箱和手机立即绑定

JAVA关于StringBuffer中问题

JAVA关于StringBuffer中问题

我打了两个代码 一个是之前好久打的  一个是最近打的  最近打的这个代码运行不了 我不知道为什么完成功能:   生成N个随机字符串  生成后排序可以运行的版本:            此版本中 字符串长度是随机的 个数是已定的 public void sorttext3(){            List<String> a = new ArrayList<String>();            //String[] b = new String[10];            String st = "abcdefghijklmnopqrstuvwxyz"                    + "ABCDEFGHIJKLMNOPQRSTUVWXYZ"                    + "0123456789";            Random c = new Random();            int i=0;                                     for(int z=0;z<10;z++){                StringBuffer sb = new StringBuffer();                    do{                        int j=c.nextInt(10)+1;                    for(;i<j;i++){                    //Random d = new Random(62);                    int num = c.nextInt(st.length());                    sb.append(st.charAt(num));                       }                    }while(a.contains(sb.toString()));                    a.add(sb.toString());               }            System.out.println("···········排序前");                for (String string : a) {                    System.out.println("元素"+a);                }                                Collections.sort(a);                            System.out.println("``````````排序后");                    for (String string : a) {                    System.out.println("元素 "+a);                }                                }不可运行版本 :   此版本中 字符串的长度是用户定义的 字符串的个数也是用户定义的public class RandomString {    public void TestRomString(){        List<String> rs = new ArrayList<String>();        String c = "abcdefghiglmlnopqrsgnuwysz"                + "ABCDEFGHIJKLMNOPQRSGWVWYS"                + "Z0123456789";        Random r = new Random();        Scanner console = new Scanner(System.in);        System.out.println("请定义字符串的个数");        int a = console.nextInt();        System.out.println("请输入每个字符串的长度 ");        int b = console.nextInt();//        StringBuffer sb = new StringBuffer();        for(int i = 0 ; i<a; i++){            StringBuffer sb = new StringBuffer();            for(int j=0;i<b;j++){                int num = r.nextInt(c.length());                sb.append(c.charAt(num));            }            String e = sb.toString();            rs.add(e);            if(rs.contains(e)){                i--;                continue;            }        }        System.out.println("排序前");        for (String string : rs) {            System.out.println(string);        }        System.out.println("排序后");        Collections.sort(rs);        for (String string : rs) {            System.out.println(string);        }    }    public static void main(String[] args) {        RandomString rst = new RandomString();        rst.TestRomString();    }}不可运行版本   加粗加下划线部分有错误  导致栈内存都崩溃了 = =
查看完整描述

1 回答

已采纳
?
慕粉4075985

TA贡献104条经验 获得超33个赞

     for(int j=0;i<b;j++) 结束条件错误,导致无限循环

查看完整回答
反对 回复 2017-03-03
  • qq_什么亡魂溺海没有跳海实在_03283094
    qq_什么亡魂溺海没有跳海实在_03283094
    问题不在这 这个我也不知道怎么变成i了 之前是j时候也不好用 我现在改回去还是不好用 = =
  • 慕粉4075985
    慕粉4075985
    String e = sb.toString(); rs.add(e); if(rs.contains(e)){ i--; continue; } if(rs.contains(e))这个判断永远是true,你这里i--,上面又i++,造成死循环
  • 1 回答
  • 0 关注
  • 1012 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信