2013-03-28 3 views
1

Коды ниже компилируется нормально, но они не генерируют количество цифргенерирует уникальное количество цифр

ganerateNewRandom("aaaa", 3) 

результат будет aaa435.

Коды ниже компилируется нормально, но они не генерируют количество цифр

import java.util.*; 

public class Student 
{ 
    private String studentId; 

    private String name; 

    private Random random; 


    public Student(String name) 

    { 
     studentId = "UnKnow"; 

     this.name = name; 

     random = new Random(); 

    } 

    public String ganerateNewRandom(String prefix, int number) 

    { 

     int index = random.nextInt(number); 

     return prefix + number + ""; 
    } 
} 
+0

Адрес: или где вы звоните? –

+3

Могу я предложить какую-то петлю? – Keppil

+0

'random.nextX()' возвращает одно число (может быть любое число цифр, хотя). –

ответ

4
public String ganerateNewRandom(String prefix, int number) { //sic 

    StringBuffer ret = new StringBuffer(prefix); 

    for(int i=0;i<number;i++) ret.append(random.nextInt(1000)); 

    return ret.toString(); 

} 

В случае, если упомянутое выше, nextInt (3) будет возвращать либо 0, 1 или 2 Ничего, что вы ищете.

+1

спасибо, что было полезно –

2

API-интерфейс для Random.nextInt(int n) состояний:

Возвращает псевдохаотическом равномерно распределенную значение INT между 0 (включительно) и заданного значения (эксклюзивный)

Если вы хотите создать 3 случайных номер, создайте for-loop для добавления n сгенерируйте цифры от Random и добавьте их в prefix.

1

Вероятно, стоит с помощью String.format здесь:

static private Random random = new Random(); 

public static String ganerateNewRandom(String prefix, int digits) { 
    return String.format("%s%03d", 
         prefix, 
         random.nextInt((int)Math.pow(10, digits))); 
} 

Примечания:

  • Параметра random.nextInt является верхней границей, а не количество цифр. Вам нужно 10^digits, чтобы получить номер, который вы хотите.
  • Использование %03d будет заполнено любым числом < 100 с нулями для вас.
Смежные вопросы