我收到意外输出以生成小写随机字母-我的代码是

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/

10-11 21:34
查看更多