Чтение значения метки кнопки, сгенерированной Math.random - PullRequest
0 голосов
/ 03 октября 2019

Я работаю над упражнением, которое просит меня выполнить следующее:

  1. Создать GridPane
  2. Установить горизонтальный и вертикальный зазор панели равным нулю
  3. Установите видимость линии сетки панели на true
  4. Используйте вложенные циклы FOR для создания и добавления кнопок на панель (циклы начинаются с 0 до 10)
  5. Каждая кнопка должна быть помечена любым числом отОт 0 до 99
  6. Цвет кнопок основан на следующих правилах: a. Если метка цвета делится на 2, то измените цвет на Синий b. Если метка цвета делится на 3, измените цвет на Желтый c. Если метка цвета делится на 6, измените цвет на Зеленый

  7. Добавьте панель к сцене

  8. Добавьте сцену на сцену, затемотображение стадии

У меня все настроено, но я не уверен, как прочитать значение, сгенерированное Math.random, и назначить для этой кнопки определенный цвет.

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.scene.layout.GridPane;
import javafx.scene.control.Button;
import javafx.scene.paint.Color;



public class Exercise8GridPane extends Application {

    @Override
    public void start(Stage primary) {
        primary.setTitle("Exercise 8");
        GridPane gp = new GridPane();
        gp.setHgap(0);
        gp.setVgap(0);
        gp.setGridLinesVisible(true);
        for (int k = 0; k < 10; k++) {
            for (int l = 0; l < 10; l++) {                
                Button btn = new Button(String.valueOf((int)(Math.random() * 100)));
                // if / 3 == 0){
                btn.setStyle("-fx-base:red;-fx-text-fill:yellow"); 

                  gp.add(btn, l, k);  
            }

        }
        Scene s = new Scene(gp);
        primary.setScene(s);
        primary.show();
        }
    public static void main(String[] args) {
        launch(args);
    }
}

Ответы [ 2 ]

0 голосов
/ 03 октября 2019
Math.random() -> 0.0 - 0.9999999...
(int)(Math.random() * 5) -> 0 - 4
(int)(Math.random() * 5 + 1) -> 1 - 5

Чтобы вы могли написать что-то вроде:

int colorNum = (int)(Math.random() * 4);
if(colorNum ==0)
    //set button to red
//etc.
0 голосов
/ 03 октября 2019

java.lang.Math.random () возвращает двойное значение с положительным знаком, больше или равное 0,0 и меньше 1,0. Этот новый генератор псевдослучайных чисел используется после этого для всех вызовов этого метода и нигде больше не используется.

Существует бесчисленное множество способов его прочитать.

Я бы порекомендовал сделать что-то вроде

int RED = (int) (Math.random() * 256); 
// Note that Math.random() returns a value less than 1.0 
int BLUE = ...

Трудно получить три значения из одного числа, поэтому я думаю, что это будет хорошо работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...