Java - Como puedo almacenar números en una pila y que luego los muestre

 
Vista:
sin imagen de perfil
Val: 31
Ha aumentado 1 puesto en Java (en relación al último mes)
Gráfica de Java

Como puedo almacenar números en una pila y que luego los muestre

Publicado por Joker (27 intervenciones) el 19/04/2020 21:00:26
Hola,

Como puedo almacenar números en una pila y que luego los muestre? Es decir, tengo que hacer que el usuario vaya introduciendo número y después clasificarlos en nº de tres dígitos, nº primos y resto de números (que no se han ni primos ni de tres dígitos). No consigo que se almacenen los números. Agradecería vuestra ayuda.

interfaz para una pila de datos
1
2
3
4
5
6
7
public interface IPila {
	public boolean esPilaLlena();
	public boolean esPilaVacia();
	public void empilar(int elem);
	public int desempilar();
	public int verCima();
}

Clase de la pila dinamica
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
public class PilaD implements IPila {
	class Nodo {
		int dato;
		Nodo sig;
	}
 
	private Nodo raiz;
 
	public PilaD() {
		raiz = null;
	}
 
	public void empilar(int valor) {
		Nodo nuevo = new Nodo();
		nuevo.dato = valor;
		if (raiz == null){  //Pila vacia
			nuevo.sig = null;
			raiz = nuevo;
		} else {
			nuevo.sig = raiz;
			raiz = nuevo;
		}
	}
 
	public int desempilar() {
		if (raiz != null) {
			int informacion = raiz.dato;
			raiz = raiz.sig;
			return informacion;
		} else {
			return Integer.MAX_VALUE;
		}
	}
 
	public int verCima() {
		if (raiz != null) {
			return raiz.dato;
		} else {
			return Integer.MAX_VALUE;
		}
	}
 
	public boolean esPilaVacia() {
		if(raiz == null)
			return true;
		else
			return false;
	}
 
	public boolean esPilaLlena() {
		return false;
	}
 
}

Clase para los numeros
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
public class Numeros {
 
	//Función que saca si es un número primo o no
	public static boolean numPrimo(int num) {
		boolean esPrimo=true;
		int contadorPri=2;
 
		while((esPrimo) && (contadorPri!=num)) {
			if (num%contadorPri==0)
				esPrimo=false;
			contadorPri++;
		}
 
		return esPrimo;
	}
 
 
	//PROGRAMA PRINCIPAL
	public static void main(String[] args) {
 
		//Pilas segun la condición
		PilaD pilaTresDigitos = new PilaD();
		PilaD pilaPrimos = new PilaD();
		PilaD pilaDemasNumeros = new PilaD();
 
		Scanner sc = new Scanner(System.in);
		int num=0, contador=0, elemento, p=0;
		String datosTres = null;
		boolean res;
 
		//Introducir los números hasta que se introduzca 0
		do {
			System.out.println("Introduce una número y si quieres acabar introduce 0");
			num=sc.nextInt();
			elemento=num;
		} while(num!=0);
 
		//Saber si tiene tres digitos
		while (elemento>0) {
			elemento=elemento/10;
			contador++;
		}
 
		//Dependiendo de la condición que cumplen iran a una pila u otra
		if (contador==3)
			pilaTresDigitos.empilar(num);
		else
			//Dependiendo del resultado de la función ira a una una pila u otra
			if (numPrimo(num)==true) {
				pilaPrimos.empilar(num);
			} else
				pilaDemasNumeros.empilar(num);
 
 
		//Visualizar el resultado
		/*System.out.println("Números de tres digitos --> " + pilaTresDigitos.desempilar());
		System.out.println("Números primos --> " + pilaTresDigitos.verCima());
		System.out.println("El resto de los números --> " + pilaTresDigitos.verCima());*/
 
		//Saco los valores de la pila para asi poder visualizar los números
		while(!pilaTresDigitos.esPilaVacia()) {
			System.out.println(pilaTresDigitos.desempilar());
		}
	}
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder