
Luis Tapia
Pregunta¿Cuál sería el lugar indicado para usar las funciones, arriba o abajo del main?

Sanders Gutiérrez
Un ejemplo de lo que dije en el otro comentario.
Supón que tienes una clase que emite un saludo.
Archivo
Saludador.java
public class Saludador { private String sujeto; /** * Constructor vacío por si quieres instanciar la clase * sin inicializar ninguna propiedad. * @return Saludador */ public Saludador() { } /** * Constructor con parámetro por si quieres darle * un valor inicial a la propiedad sujeto * @param sujeto * @return Saludador */ public Saludador(String sujeto) { this.sujeto = sujeto; } /** * Método para obtener el valor de la propierdad * sujeto desde fuera de la clase. * @return String */ public String getSujeto() { return sujeto; } /** * Método para asignar valor a la propiedad * sujeto desde fuera de la clase. * @param sujeto * @return void */ public void setSujeto(String sujeto) { this.sujeto = sujeto; } /** * Emite un mensaje de saludo o despedida a un sujeto cualquiera. * @param mensaje * @return String */ public String saludar(String mensaje) { if (this.getSujeto() == null) { this.setSujeto("Mundo"); } return mensaje.concat(" ").concat(this.sujeto); } }
Archivo
Main.java
public class Main { public static void main(String[] args) { /* * Primera forma de llamar pasando como argumento un sujeto al que se va saludar */ Saludador saludador = new Saludador("Mundo"); System.out.println(saludador.saludar("Hola")); /* * Segunda forma de llamar usando el setter de la clase Saludador * para establecer el valor de la propiedad. Esta vez la instancia de * la clase no recibe ningún argumento, así podremos asignar el * sujeto al que se quiere saludar mediante el método setSujeto */ Saludador saludador2 = new Saludador(); saludador2.setSujeto("Sanders"); System.out.println(saludador2.saludar("Adiós")); } }
Lo importante de esto es lo siguiente:
Para compilar el código debes usar el compilador de Java "javac
cd path_to_project # Esto va generar un archivo Saludador.class javac Saludador.java
El archivo
Saludador.class
java
# Va sin la extension .class java ya sabe que extensión debería llevar para ejecutarlo. java Saludador
Si me seguiste hasta aquí te darás cuenta que debió mostrarte en la terminal un mensaje parecido a este...
Error: Main method not found in class Saludador, please define the main method as: public static void main(String[] args) or a JavaFX application class must extend javafx.application.Application
eso sucede porque la clase
Saludador.java
Main.java
cd path_to_project # Compilar la clase `Main.java` que producirá un archivo `Main.class`, tal como sucedió antes javac Main.java
Entonces ejecutamos la clase
Main.class
java Main
Eso debería darte una salida parecida a esta si no cambiaste el mensaje ni el sujeto.
Hola Mundo Adiós Mundo

Sanders Gutiérrez
No importa en qué punto del programa esté, ya que el JRE cuando ejecuta tu programa lo que hará es escanear tu código en busca del método main el cuál es el mecanismo mediante el que java sabe por donde inicia la ejecución de tu programa. Por lo tanto da igual si lo pones arriba abajo en medio o donde sea, lo importante es que en el flujo de ejecución de tu programa se vaya llamando conforme la lógica de tu programa.
Cualquier clase que crees y no tenga un método main no se va ejecutar nada hasta que explícitamente le digas a la JVM cómo encontrar el punto de entrada a tu programa.
Es como si invitaras a tu novia a casa pero nunca le abres la puerta.

Jose Enrique Valenzuela
Buenas noches para serte honesto la funciones tienen que ir en otra clase en metodo main tienes que crear el objeto cuando creas el objeto en el metodo main solo lo tines que madar a llamar por ejemplo
public int sumar(int a , int b){ return a+b; } //metodo main public static void main(String[]args){ Suma sm=new Suma(); int resultado =sm(10+10); }