在给定范围内使用Java生成随机小写字母

3

我正在尝试编写一个方法,可以接受一个小写字母起始字符和一个小写字母结束字符,并在该范围内生成随机字母。然后,将这些随机字母分配给由用户确定大小的数组元素。到目前为止,只要起始字符是'a',我的代码似乎可以工作。但是当起始字符不是'a'时,我无法弄清楚如何使其正常工作。我编写了这个完整的程序来尝试排除我的方法问题:

import java.util.Random;
import java.util.Scanner;
public class Add
{
    public static void main( String[] args )
    {
        Scanner scan = new Scanner(System.in);
        System.out.print("Enter array size: ");
        int arraySize = scan.nextInt();
        char charArray[] = new char[arraySize];

        int fromChar;
        int toChar;
        do
        {
        System.out.print("Enter first character: ");
        String line = scan.next();
        fromChar = line.charAt(0);

        System.out.print("Enter second character: ");
        line = scan.next();
        toChar = line.charAt(0);

        Random generator = new Random();
        for(int i = 0; i < arraySize; i++)
        {
            int randomInt = generator.nextInt(toChar - fromChar + 1) + 97;
            //System.out.print(randomInt + " | "); //used to print unicode values
            charArray[i] = (char)(randomInt);
        }
        System.out.println(charArray);
    }
        while(true);

    } // end of main
}// end of class

任何帮助都将不胜感激!

2
嗨John,欢迎来到SO。+1为SSCCE :) - Ben
SSCCE?抱歉,我不熟悉这个术语。 :) - Johnny
2
“短小精悍、自我完备、正确(可编译)、实例(http://sscce.org/)”。当我阅读到代码时,我以为我已经知道了答案,但是我可以在几分钟内测试它,因为我不需要编写自己的测试包装器。 - Patricia Shanahan
3个回答

5
int randomInt = generator.nextInt(toChar - fromChar + 1) + fromChar;

@Patricia Shanahan 好的,现在我在调用我的对象方法时遇到了NullPointerException。我的构造函数有问题吗? public CharCollection(int arraySize)//构造函数 { char charArray[] = new char[arraySize]; numOfElements = arraySize; } - Johnny
看一下这行代码 "char charArray[] = new char[arraySize];"。它在构造函数中声明并初始化了一个局部变量。如果它本应该初始化对象中的一个字段,请去掉初始的 "char",将其从带有初始化器的声明转换为赋值操作。 - Patricia Shanahan
嗯...我还有点困惑。我知道在声明数组后(如上面的私有实例变量),我只需要赋值即可。例如:private int x; x = 1; 但是我不知道如何将其翻译为数组。 - Johnny
私有整数数组myArray = new int [10]; 或 私有整数数组myArray = {2, 3, 100}; - Patricia Shanahan

3
int randomInt = generator.nextInt(toChar - fromChar + 1) + 97;

这句话应该改为:“这不应该是:-”。
int randomInt = generator.nextInt(toChar - fromChar + 1) + fromChar;

0

*这会对你有帮助吗?如果你在其中放置字母'a',例如A,它将随机生成大写字母。如果你在其中放置数字,它将为你生成一些字符。我在那里放置了'b',从'b'开始。*

public static void main(String[] args) {

    Random r = new Random();


    System.out.print((char) ((r.nextInt(26) + 'b')) + " ");

    System.out.println();


}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接