Генерация случайного числа символов - PullRequest
0 голосов
/ 30 апреля 2020

Мне нужно создать программу, которая будет читать число символов, которые будут напечатаны, и она будет печатать случайные символы (az, AZ, 0-9 и такие символы, как!, &, $, Et c). И первый символ, который будет напечатан, не может быть числом (0-9).

Таким образом, пример вывода будет выглядеть следующим образом:

Длина переменной? 20

a5fTnO $ akP_a12BahsiO

Это то, что у меня есть, но я застрял и не знаю, что еще я могу сделать, чтобы сделать это работает. Я не уверен, что я тоже на правильном пути.

Было бы проще для меня создать строку символов, а затем просто получить случайные символы из строки (если это возможно)?


import java.util.Scanner;

public class VariableNameRandomGen{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);

        System.out.print("Length of the variable? ");
        int num = sc.nextInt();

        final int noOfChars = num;
        final int charsPerLine = num;

        for(int i = 0; i < noOfChars; i++){
            char ch = getRandomCharacter();

            if((i+i) % charsPerLine == 0)
                System.out.println(ch);
            else
                System.out.print(ch);
        }
    }

    public static char getRandomCharacter(char ch1, char 2){
        return (char)(ch1 + Math.random() * (ch2 - ch1 + 1));
    }

    public static char getRandomUpperCaseLetter(){
        return getRandomCharacter('A', 'Z');

    }

    public static char getRandomDigitCharacter(){
        return getRandomCharacter('0', '9');
    }
}

1 Ответ

0 голосов
/ 30 апреля 2020

Вы можете использовать образец строки, содержащий все символы, которые вы хотите:

final static String SAMPLE = "abcd... xyzABCD...XYZ ()?!;"
final static String NUM = "0123456789";
public static char getRandomCharacter(String s){
    return s.charAt( new Random(s.lenght()).nextInt());
}

И в основном

String rs = "" + getRandomCharacter(SAMPLE);
for(int i = 1; i < noOfChars; i++){
        char ch = getRandomCharacter(SAMPLE + NUM);
        rs+= ch;
    }
System.out.print(rs);
...