En tamaños de los arreglos en Java son siempre de longitud fija pero no hay forma en que puede el más aumenta dinámicamente el tamaño de la matriz en tiempo de ejecución sí mismo
Ésta es "utilizado", así como manera de hacer IT
int temp[]=new int[stck.length+1];
for(int i=0;i<stck.length;i++)temp[i]=stck[i];
stck=temp;
En el código anterior estamos inicializando a [] array nuevo temp, y usando adicionalmente un bucle para inicializar el contenido de la temp con el contenido de la matriz original es decir preferido. stck []. Y luego volviendo a copiarlo al original, dándonos una nueva variedad de TAMAÑO nuevo.
Sin duda, genera una sobrecarga de la CPU debido a la reinicialización de una matriz utilizando for loop repetidamente. Pero aún puede usarlo e implementarlo en su código. Para la mejor práctica, use "Lista enlazada" en lugar de Array, si desea que los datos se almacenen dinámicamente en la memoria, de longitud variable.
Aquí hay un ejemplo en tiempo real basado en dinámicas Pilas para aumentar el tamaño del orden de batalla en tiempo de ejecución
de nombre de archivo: DStack.java
public class DStack {
private int stck[];
int tos;
void Init_Stck(int size) {
stck=new int[size];
tos=-1;
}
int Change_Stck(int size){
return stck[size];
}
public void push(int item){
if(tos==stck.length-1){
int temp[]=new int[stck.length+1];
for(int i=0;i<stck.length;i++)temp[i]=stck[i];
stck=temp;
stck[++tos]=item;
}
else
stck[++tos]=item;
}
public int pop(){
if(tos<0){
System.out.println("Stack Underflow");
return 0;
}
else return stck[tos--];
}
public void display(){
for(int x=0;x<stck.length;x++){
System.out.print(stck[x]+" ");
}
System.out.println();
}
}
de nombre de archivo: Exec.java
(con la clase principal)
import java.util.*;
public class Exec {
private static Scanner in;
public static void main(String[] args) {
in = new Scanner(System.in);
int option,item,i=1;
DStack obj=new DStack();
obj.Init_Stck(1);
do{
System.out.println();
System.out.println("--MENU--");
System.out.println("1. Push a Value in The Stack");
System.out.println("2. Pop a Value from the Stack");
System.out.println("3. Display Stack");
System.out.println("4. Exit");
option=in.nextInt();
switch(option){
case 1:
System.out.println("Enter the Value to be Pushed");
item=in.nextInt();
obj.push(item);
break;
case 2:
System.out.println("Popped Item: "+obj.pop());
obj.Change_Stck(obj.tos);
break;
case 3:
System.out.println("Displaying...");
obj.display();
break;
case 4:
System.out.println("Exiting...");
i=0;
break;
default:
System.out.println("Enter a Valid Value");
}
}while(i==1);
}
}
Espero que haya solucionado tu duda.
me fijo hasta el formato de la pregunta, puede simplemente el título si lo desea, simplemente ser descriptivo. y bienvenidos a stackoverflow! : D –