Muchas gracias amigo Kabuto, te comento que opte por la opción 2 (Clase sin Main) el programa quedo así:
1. Menu
package menu;
import java.util.InputMismatchException;
import java.util.Scanner;
public class Menu {
public static void main(String[] args) {
Scanner sn = new Scanner(System.in);
boolean salir = false;
int opcion;
while(!salir){
System.out.println("\n\t-- Programa que muestra un menu con opciones de ejercicios de las diferentes estructuras --");
System.out.println();
System.out.println("1.- Funciones");
System.out.println("2.- Recursividad");
System.out.println("3.- Metodo de ordenacion de insercion");
System.out.println("4.- Metodo de ordenacion Shell");
System.out.println("5.- Listas de personas");
System.out.println("6.- Pilas");
System.out.println("7.- Colas");
System.out.println("8.- Salir");
System.out.println();
try{
System.out.print("Seleccione cualquiera de las opciones anteriores: ");
opcion = sn.nextInt();
switch (opcion){
case 1:
funciones.funciones();
break;
case 2:
funciones.recursividad();
break;
case 3:
funciones.ordenacionInsercion();
break;
case 4:
funciones.ordenacionShell();
break;
case 5:
funciones.listaPersonas();
break;
case 6:
funciones.metodoPilas();
break;
case 7:
funciones.metodoColas();
break;
case 8:
salir=true;
break;
default:
System.out.println("Las opciones son entre 1 y 8");
}
}
catch(InputMismatchException e){
System.out.print("Debes seleccionar un numero de opcion");
sn.next();
}
}
System.out.println("\n\t *-* Gracias por utilizar el sistema, hasta luego *-* ");
}
}
2. Clases sin el main
package menu;
import java.util.ArrayList;
import java.util.Scanner;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Stack;
class funciones {
public static void funciones() {
Scanner sc = new Scanner(System.in);
float numero1, numero2, suma, resta, mult, div, resto;
System.out.print("Digite el primer numero: ");
numero1 = sc.nextFloat();
System.out.print("Digite el segundo numero: ");
numero2 = sc.nextFloat();
suma = numero1+numero2;
resta = numero1-numero2;
mult = numero1*numero2;
div = numero1/numero2;
resto = numero1%numero2;
System.out.println("La suma es: "+suma);
System.out.println("La resta es: "+resta);
System.out.println("La multiplicacion es: "+mult);
System.out.println("La division es: "+div);
System.out.println("El resto es: "+resto);
}
public static void recursividad() {
//Utilizacmos Scanner para leer datos desde teclado podemos usamos el metodo nextInt
Scanner datos= new Scanner(System.in);
//Se declaran las variables (int=entero)
int fin, inicio, incremento;
//Solicitamos la informacion al usuario
System.out.println("\n\t--Programa que muestra el funcionamiento de la recursividad solicitando 3 numeros--");
System.out.println("Ingresa el numero de inicio de la lista: ");
//Aqui se almacena la informacion de la variable
inicio= datos.nextInt();
System.out.println("Ingresa el numero en el que quieres finalizar la lista: ");
fin= datos.nextInt();
System.out.println("Indica el incremento de la lista: ");
incremento= datos.nextInt();
listaNumeros(fin,inicio,incremento);
}
//Aqui aplicamos la Recursividad
public static void listaNumeros(int fin,int inicio, int incremento){
if(fin > 0 ){
System.out.println(inicio);
listaNumeros(fin - incremento,inicio+incremento,incremento);
}
}
public static void ordenacionInsercion() {
int[] lista = new int[100]; // Lista de números enteros que supondremos llena.
int i,j; // Índices sobre la lista.
int aux; // Variable auxiliar para el intercambio de valores.
for (i = 1; i < 100; i++){ // ¡Ojo! Empezamos en 1
aux = lista[i]; // Guardamos el valor a ordenar.
j = i - 1;
while ( (j >= 0) && lista[j] > aux ) // Siempre que sea mayor que aux.
// ordenamos de menor a mayor.
lista[j+1] = lista[j--]; // Trasladamos el valor y movemos el indice.
lista [j+1] = aux; // Ponemos el valor a ordenar en su sitio.
}
}
public static void ordenacionShell() {
int arreglo[]={5,4,2,1,3,6}, aux, salto;
System.out.println("Se muestra el contenido de la serie de datos numericos...");
for(int i=0;i<=5;i++){
System.out.print(arreglo[i]+ " - ");
}
//Ordenamiento por el metodo Shell
boolean cambios;
for (salto = 6 / 2; salto != 0; salto /= 2) {
cambios = true;
while (cambios) { // Mientras se intercambie algún elemento
cambios = false;
for (int i = salto; i < 6; i++) // se da una pasada
{
if (arreglo[i - salto] > arreglo[i]) { // y si están desordenados
aux = arreglo[i]; // se reordenan
arreglo[i] = arreglo[i - salto];
arreglo[i - salto] = aux;
cambios = true; // y se marca como cambio.
}
}
}
}
//Mostrando el arreglo ordenando
System.out.println("\n\nSe esta imprimiento los valores del arreglo en forma ascendente");
for(int i=0;i<6;i++){
System.out.print(arreglo[i]+ " - ");
}
System.out.println();
}
public static void listaPersonas() {
//creamos el ArrayList que contendrá la altura de los alumnos
ArrayList<Double> altura = new ArrayList();
int N;
double media;
//obtenemos el número de alumnos de la clase
N = numeroAlumnos();
//leemos la altura de los N alumnos
leerAlturas(altura, N);
//calculamos la media
media = calcularMedia(altura);
//mostramos los resultados
mostrarResultados(altura, media);
}
//Método para pedir por teclado el número de alumnos de la clase
public static int numeroAlumnos() {
Scanner sc = new Scanner(System.in);
int n;
do {
System.out.print("Introduce numero de alumnos: ");
n = sc.nextInt();
} while (n < 1);
return n;
}
//Este método recibe el ArrayList y el número de alumnos de la clase
//Pide por teclado la altura de todos los alumnos y las guarda en el ArrayList
public static void leerAlturas(ArrayList<Double> a, int n) {
Scanner sc = new Scanner(System.in);
int i;
double alto;
for (i = 1; i <= n; i++) {
do {
System.out.print("Alumno " + i + " altura: ");
alto = sc.nextDouble();
} while (alto <= 0);
a.add(alto); //añade la altura al final del ArrayList
}
}
//Este método recibe el ArrayList con todas las alturas
//calcula y devuelve la media
public static double calcularMedia(ArrayList<Double> a) {
double media = 0;
for (Double d : a) {
media = media + d;
}
return media / a.size();
}
//Muestra la altura de todos los alumnos, la media y calcula y muestra
//cuantos alumnos hay con altura superior a la media
//y cuántos con altura inferior
public static void mostrarResultados(ArrayList<Double> a, double media) {
int superior = 0, inferior = 0;
System.out.println("alturas introducidas: ");
System.out.println(a);
for (Double d : a) {
if (d > media)
superior++;
else if (d < media)
inferior++;
}
System.out.printf("Media: %.2f %n", media);
System.out.println("Hay " + superior + " alumnos mas altos que la media");
System.out.println("Hay " + inferior + " alumnos mas bajos que la media");
}
public static void metodoPilas() {
//Entrada (Expresión en Postfija)
String expr = "2 23 6 + * 1 -"; // equivale a 2*(23+6)-1
String[] post = expr.split(" ");
//Declaración de las pilas
Stack < String > E = new Stack < String > (); //Pila entrada
Stack < String > P = new Stack < String > (); //Pila de operandos
//Añadir post (array) a la Pila de entrada (E)
for (int i = post.length - 1; i >= 0; i--) {
E.push(post[i]);
}
//Algoritmo de Evaluación Postfija
String operadores = "+-*/%";
while (!E.isEmpty()) {
if (operadores.contains("" + E.peek())) {
P.push(evaluar(E.pop(), P.pop(), P.pop()) + "");
}else {
P.push(E.pop());
}
}
//Mostrar resultados:
System.out.println("Expresion: " + expr);
System.out.println("Resultado: " + P.peek());
}
private static int evaluar(String op, String n2, String n1) {
int num1 = Integer.parseInt(n1);
int num2 = Integer.parseInt(n2);
if (op.equals("+")) return (num1 + num2);
if (op.equals("-")) return (num1 - num2);
if (op.equals("*")) return (num1 * num2);
if (op.equals("/")) return (num1 / num2);
if (op.equals("%")) return (num1 % num2);
return 0;
}
public static void metodoColas() {
/*Creamos la Cola Indicando el tipo de dato*/
Queue cola=new LinkedList();
/*Insertamos datos*/
cola.offer(3);
cola.add(14);
cola.offer(12);
cola.add(7);
cola.offer(10);
/*Impresion de la Cola llena con los datos*/
System.out.println("Cola llena: " + cola);
/*Estructura repetitiva para desencolar*/
while(cola.poll()!=null){//Desencolamos y el valor se compara con null
System.out.println(cola.peek());//Muestra el nuevo Frente
}
/*Muestra null debido a que la cola ya esta vacia*/
System.out.println(cola.peek());
}
}
Existe un ultimo detalle, cuando seleccionas una opción, la consola muestra el programa seleccionado cumple con su propósito y al terminar regresa de vuelta al menú, ya le busque pero no se como puedo hacer para que el menú pregunte "desea regresar al menú principal" o darle la opción al usuario de terminar el programa, me podrías ayudar por favor?
Nuevamente, muchas gracias por todo.
Quedo atento a tus amables instrucciones.
ElMike