I want to generate a random number with as many digits as the user enters. All of these digits should be different from each other. I can't do it with arrays because I learned Java in methods, so what should I do? I thought of doing it this way but up to k == 10 is too long. Is there a shorter way? If the user enters the value of a as 8, I have to create a number with 8 different digits.
public static void main(String[] args) {
Scanner scn = new Scanner(System.in);
System.out.println("a: ");
int a = scn.nextInt();
random(a);
}
public static void random(int k) {
Random rand = new Random();
int rand;
if (k == 1) {
rand = 1 + (int) (Math.random() * 9);
System.out.println(rand);
} else if (k == 2) {
rand = 10 + (int) (Math.random() * 90);
int digit1 = rand / 10;
int digit2 = rand % 10;
while (digit1 == digit2) {
if (digit1 == 0) {
digit2 = (int) (Math.random() * 9);
}
}
System.out.println(rand);
} else if (k == 3) {
rand = 100 + (int) (Math.random() * 900);
int digit1 = rand / 100;
int digit2 = (rand / 10) % 10;
int digit3 = rand % 10;
while (digit1 == digit2 || digit1 == digit3 || digit2 == digit3) {
if (digit1 == digit2 || digit2 == digit3) {
digit2 = (int) (Math.random() * 9);
}
if (digit1 == digit3 || digit2 == digit3) {
digit3 = (int) (Math.random() * 9);
}
}
System.out.println(rand);
}
}