Imprimir
import java.util.Random;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.Pane;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class App extends Application {

    Pane paneRoot = new Pane();
    VBox paneOperaciones = new VBox();
    
    public static void main(String[] args) {
        launch();
    }

    @Override
    public void start(Stage stage) {
        // Preparación de la ventana
        paneRoot.getChildren().add(paneOperaciones);
        var scene = new Scene(paneRoot, 640, 480);
        stage.setScene(scene);
        stage.show();
        
        // Llama a método sin parámetros ni valor de retorno
        generarSumaAleatoria();
        // También se puede preceder de this en las llamadas 
        //    a cualquiera de los métodos de esta misma clase
        this.generarSumaAleatoria();
        
        // Llama a método con parámetros literales
        calcularSuma(5, 2);
        
        // Llama a método con parámetros
        int num1 = 3;
        int num2 = 9;
        calcularSuma(num1, num2);
        
        // Llama a método sin parámetros, con retorno
        String strSuma = getSumaAleatoria();
        mostrarOperacionEnPantalla(strSuma);

        // Llama a método sin parámetros, con retorno que se pasa a otro método
        mostrarOperacionEnPantalla(getSumaAleatoria());
        
        // Llamada a método con parámetros y valor de retorno
        // No tiene sentido hacer: getSuma(num1, num2);
        int res = getSuma(num1, num2);
        String strRes = num1 + " + " + num2 + " = " + res;
        mostrarOperacionEnPantalla(strRes);                
    }

    // Ejemplo de declaración de método sin parámetros ni valor de retorno
    private void generarSumaAleatoria() {
        Random random = new Random();
        int op1 = random.nextInt(10);
        int op2 = random.nextInt(10);
        int resultado = op1 + op2;
        
        String strOperacion = op1 + " + " + op2 + " = " + resultado;
        mostrarOperacionEnPantalla(strOperacion);
    }
    
    // Ejemplo de declaración de método con varios parámetros y sin valor de retorno
    private void calcularSuma(int op1, int op2) {
        int resultado = op1 + op2;        
        String strOperacion = op1 + " + " + op2 + " = " + resultado;
        mostrarOperacionEnPantalla(strOperacion);
    }
    
    // Ejemplo de declaración de método con un parámetro y sin valor de retorno
    private void mostrarOperacionEnPantalla(String operacion) {
        Label labelOperacion = new Label(operacion);
        paneOperaciones.getChildren().add(labelOperacion);        
    }
    
    // Ejemplo de declaración de método sin parámetros y con valor de retorno
    private String getSumaAleatoria() {
        Random random = new Random();
        int num1 = random.nextInt(10);
        int num2 = random.nextInt(10);
        int suma = num1 + num2;
        String strOperacion = num1 + " + " + num2 + " = " + suma;
        return strOperacion;
    }

    // Ejemplo de declaración de método con parámetros y con valor de retorno
    private int getSuma(int num1, int num2) {
        int resultado = num1 + num2;
        return resultado;
    }
    
}