为什么用for(int i =0;i<=(int)(Math.random()*10);i++)方法来获取字符串的长度最多只能9位,提前变量赋值随机数却可以得到10位

来源:6-5 应用 Collections.sort() 实现 List 排序

T龙神T

2019-10-25 16:57

public void testsort3(){
		char[] string= {'0','1','2','3','4','5','6',
			     '7','8','9','a','b','c','d',
			   	  'e','f','g','h','i','j','k',				        
			   	  'l','m','n','o','p','q','r',				        
			   	  's','t','u','v','w','x','y',				        
			   	  'z','A','B','C','D','E','F',				        
			   	  'G','H','I','J','K','L','M',				        
			   	  'N','O','P','Q','R','S','T',				        
			   	  'U','V','W','X','Y','Z'};		
	List<String> stringList = new ArrayList();		
	//可变字符串		
	StringBuilder sb  ;		
	//随机字符的下标		
	int random ;		
	//循环添加字符的次数		
	int cishu;		
	//随机字符串		
	String s1;		
	do{			
	    sb = new StringBuilder();			
	    cishu = (int)(Math.random()*10);			
	    //for(int i =0;i<=(int)(Math.random()*10);i++){			
	    for(int i =0;i<=cishu;i++){				
	        random =(int) ((Math.random()*62));							
	        sb.append(string[random]);					
	     }			
	     s1 = sb.toString();			
	     if(!stringList.contains(s1)){				
	         stringList.add(s1);								
	         System.out.println("添加随机字符串:"+s1+"---长度为:"+s1.length());			
	         }		}while(stringList.size()<10);
	         //排序前		
	         System.out.println(stringList.toString());		
	         Collections.sort(stringList);
	         //排序后		
	         System.out.println(stringList.toString());			}


写回答 关注

3回答

  • 慕丝1322028
    2020-03-23 18:21:33

    提前赋值随机数其实是一种方法的重载,它表示取指定范围的数。例如: Random r = new Random(),  int a = r.nextInt(100)表示可以取0-100的任意整数。而int b = r.nextInt() * 100取不到100,只能取0-99中的任意整数

    慕丝1322...

    “提前赋值随机数”改为“提前变量赋值随机数却可以得到10位”,当时复制过来时弄错了

    2020-03-23 18:22:28

    共 1 条回复 >

  • 慕无忌8817699
    2019-11-16 11:48:36

    我是好奇干嘛在for循环中放一个会变的数

  • T龙神T
    2019-10-25 17:00:10

    具体代码在22-24行,23行注释掉的代码为什么不行,一定要提前产生随机数cishu

Java入门第三季

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

409792 学习 · 4340 问题

查看课程

相似问题