Выберите случайно цвета между 4?

1

Я хочу выбирать случайно цвета, но только между ними (красный, синий, зеленый и желтый), вот некоторые из кода, который я пытаюсь.

public class LittleBall extends JPanel {

private Random random = new Random();
private float r = random.nextFloat();
private float g = random.nextFloat();
private float b = random.nextFloat();

.....

public void paint (Graphics g) {

Color randomColor = new Color(r, this.g, b);

g.setColor(randomColor);

    }

}

Но это просто дает каждый цвет в мире oO, конечно, потому что nextFloat из переменных r, g и b дает случайные числа. Но я просто хочу уйти между цветами.

Благодарю.

  • 0
    Также рассмотрим перетасованную таблицу соответствия цветов, предложенную здесь .
Теги:
colors
swing
awt

4 ответа

1
Лучший ответ

Создайте массив цветов и произвольно получите цвет.

Color[] colors = new Color[] { Color.RED, Color.GREEN, Color.BLUE, Color.YELLOW };

Color randomColor = colors[(int)( Math.random() * 4)];

// or try this one
//Color randomColor = colors[new Random().nextInt(4)];
  • 1
    (int) Math.random () * 4 может сгенерировать «0» или ноль снова и снова
  • 0
    @ user35736644892 Спасибо, я отредактировал свой пост.
Показать ещё 3 комментария
0

использовать ниже

  Random rand = new Random();

private int r = rand.nextInt(4) + 1;
private int g =  rand.nextInt(4) + 1;
private int b =  rand.nextInt(4) + 1;
private int y =  rand.nextInt(4) + 1;

    Color randomColor = new Color(r, g, b,y);

    g.setColor(randomColor);
0

Math.random() возвращает случайное число между 0 и 1. Умножая это значение на диапазон чисел, вы можете выбрать любое значение между min и max. Тогда вам, скорее всего, нужно будет передать его в int, чтобы получить фактическое значение для R, G и/или B.

int r = (int) Math.random() * ( max - min )

даст вам значение r между указанными min и max. Поэтому вы можете выбрать диапазон следующим образом:

int r = (int) Math.random() * ( 255 - 100 )

даст вам значение для красного между 100 и 255. Вы можете, конечно, просто сделать вычитание в голове и просто положить

int r = (int) Math.random() * ( 155 )

Вы можете повторить это значение для зеленого и синего.

Возможно, вы также можете использовать значения float, если хотите. Int просто усечет десятичные значения из вашего результата.

EDIT: Увидев, что у вас есть, вы должны обязательно использовать float, а не int.

  • 0
    Спасибо, но я могу использовать класс Random, если захочу? как пример @Braj? что лучше?
  • 0
    Вы можете использовать класс Random, если хотите. Я думаю, что выше просто более аккуратно и сжато, поэтому я рекомендовал это. Выбор за вами, хотя =)
Показать ещё 1 комментарий
0
 Random generator = new Random(); 
  float i = generator.nextInt(4)+1;
  • 0
    Пожалуйста, взгляните на OP-вопрос: choose randomly colors, but only between of them (Red, Blue, Green and Yellow) Это ваш ответ?
  • 0
    @Brj, см. Doc docs.oracle.com/javase/7/docs/api/java/awt/Color.html . Я это хорошо знаю.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню