2016-02-03 3 views
-2

char [] colors = {'R', 'G', 'B', 'Y', 'W'};Как случайным образом вставлять элементы в стек из массива?

Scanner sc=new Scanner(System.in); 
Stack stack=new Stack(); 

void push(){ 
     for(int i=0; i<15; ++i){ 

      stack.push(); 
     } 

У меня есть множество цветов, и я хочу нанести случайные цвета в стек до 15 элементов. Как я могу нажимать и отображать все элементы в стеке.

+2

http://stackoverflow.com/questions/363681/generating-random-integers-in-a-specific-range – orkan

ответ

1

Попробуйте использовать что-то вроде этого:

char[] colors = {'R', 'G', 'B', 'Y', 'W'}; 

void push() { 
    for (int i = 0; i < 15; ++i) { 
     // define a random int to pick char from array index from 0 to colors.length -1 
     int idx = new Random().nextInt(colors.length); 
     // push the element into stack 
     stack.push(colors[idx]); 
    } 
} 
+0

Спасибо Abdelhak. это сработало. я пропадал только idx в толчок. –

+0

Я пытаюсь постить элементы определенного цвета, беря цвет в качестве входных данных. Void pop (String s) { \t \t stack.pop (s);} –

+0

@Johndoe попробуйте использовать эту ссылку [http://stackoverflow.com/questions/19647713/removing-a-specific-element-in-a-stack](http://stackoverflow.com/questions/19647713/removing-a-specific-element-in-a-stack) – Abdelhak

0

При определении случайного объекта, это хорошо, чтобы сделать это один раз, а затем повторно использовать объект. Случайное использует текущее время в миллисекундах в качестве семени для построения случайных чисел. В очень быстром цикле, как это, миллисекунды, вероятно, не будут сильно меняться (или вообще), поэтому вы будете «случайным образом» создавать несколько одинаковых чисел подряд.

Вот пример кода:

Stack stack=new Stack(); 
char[] colors={'R','G','B','Y','W'}; 
void push(){ 
    Random random = new Random(); 
    for(int i=0; i<15; ++i){ 
     int randomIndex = random.nextInt(colors.length); 
     stack.push(colors[randomIndex]); 
    } 
}