java实现输出指定长度的随机字符(大小写字母和数字)遇到问题?
importjava.util.ArrayList;importjava.util.Random;代码如下publicclassrandomlist{publicstat...
import java.util.ArrayList;import java.util.Random;代码如下public class randomlist { public static void main(String[] args) { ArrayList<Character> list = new ArrayList<>(); Random num = new Random(57);//+48 Random letter = new Random(122);//+97 Random Letter = new Random(90);//+65 Random dice = new Random(3);//随机加入大写小写字母或者数字的骰子 String str = ""; for (int i = 0; i < 20; i++) { int e = dice.nextInt(); if(e==0){ list.add((char)(num.nextInt()+48)); } else if(e==1){ list.add((char)(letter.nextInt()+97)); }else list.add((char)(Letter.nextInt()+65)); str=str+list.get(i); } System.out.println(str); }}运行结果如图,不知道为什么输出的是那个,我是对照asc码表写的
展开
展开全部
问题主要出在咱对 java.util.Random 这个类还不够理解,new Random(数字) 中的数字只是随机种子,而 netInt(数字) 中的数字才指定范围。
10个数字就用 netInt(10) 指定范围[0, 9],数字在ascii表对应是[48, 57],所以 netInt(10) + 48 = [0, 9] + 48 = [48, 57] 。大小写字母同理。
最关键的是咱可以学习IDEA如何使用debug调试代码,一步一步走下去,就能发现netInt()有问题。
10个数字就用 netInt(10) 指定范围[0, 9],数字在ascii表对应是[48, 57],所以 netInt(10) + 48 = [0, 9] + 48 = [48, 57] 。大小写字母同理。
最关键的是咱可以学习IDEA如何使用debug调试代码,一步一步走下去,就能发现netInt()有问题。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1
nextInt方法使用错了,改成:
int e = dice.nextInt(3);
list.add((char)(num.nextInt(10)+48));
list.add((char)(letter.nextInt(26)+97));
list.add((char)(Letter.nextInt(26)+65));
2
因为你的所有种子都是固定的,产生的是一个固定的字符串。
解决办法很多,比如可以将
Random dice=new Random(3);
改成
Random dice=new Random();
nextInt方法使用错了,改成:
int e = dice.nextInt(3);
list.add((char)(num.nextInt(10)+48));
list.add((char)(letter.nextInt(26)+97));
list.add((char)(Letter.nextInt(26)+65));
2
因为你的所有种子都是固定的,产生的是一个固定的字符串。
解决办法很多,比如可以将
Random dice=new Random(3);
改成
Random dice=new Random();
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询