我收到意外输出以生成小写随机字母-我的代码是
public class CountLettersInArrayDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
CountLettersInArray ca = new CountLetterInArray();
char [] chars;
chars = ca.setCreateArray();
System.out.println(chars);
public class CountLettersInArray {
CountLettersInArray()
{}
//method to create an array
public char[] setCreateArray()
{
//declare an array
char [] chars = new char[100];
//initialize an array with random characters
for (int i=0;i<chars.length;i++)
{
chars[i]=(char)('a' + Math.random() * ('z' + 'a' -1));
}
return chars;
}
}
输出是-
uěýyĬõĒēÕø»İäĂº±«Ċþÿd¢¼Ęÿuìăi±vÞ´Ĥč°ĩĒôĵ¶âþĂđďäÄĮݤ¤yÎĪÊíÆĭ××môÓâ¢ÓġÓÙĊïĺv×ĺî÷dĤĸt
问:任何想法错误在哪里?谢谢
最佳答案
您的代码有一个小问题,
您正在使用chars[i]=(char)('a' + Math.random() * ('z' + 'a' -1));
而是试试这个
for (int i=0;i<chars.length;i++)
{
chars[i]=(char)('a' + Math.random() * ('z' - 'a') );
}
或者更快的方法,
char Diff = 'z' - 'a';
for (int i=0;i<chars.length;i++)
{
chars[i]=(char)('a' + Math.random() * Diff);
}
只是解释,您正在尝试使用简单的公式在一个范围之间生成整数,
Min + (int)(Math.random() * ((Max - Min) + 1))
但是在您的代码中,您犯了一个小错误
Max + Min
而不是Max - Min
关于java - 生成随机的小写字母:ERROR,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20634031/