Ayuda, tengo una pequeñita duda en un programa en java
Publicado por Flor (3 intervenciones) el 25/10/2017 05:20:32
Entiendo todo lo demás, excepto en esta parte del código, el código completo lo pongo más abajo.
for( int j=len-1; j>=i; j-- )
{
datos[j+1]=datos[j]; //Luego desplazamos los elementos del array entre la última
} //y la i-ésima posición para poder asignar
datos[i]=elm; // en esta el elemento que se pretende insertar.
len++;
}
Mi duda es, por que en el for, se pone j=len-1, eso no daría un valor de -1? ya que len creo que vale 0. Es decir sólo en esa parte dudo. Ayuda.
Este es el programa completo:
Y aquí se muestran los datos en la clase principal:
for( int j=len-1; j>=i; j-- )
{
datos[j+1]=datos[j]; //Luego desplazamos los elementos del array entre la última
} //y la i-ésima posición para poder asignar
datos[i]=elm; // en esta el elemento que se pretende insertar.
len++;
}
Mi duda es, por que en el for, se pone j=len-1, eso no daría un valor de -1? ya que len creo que vale 0. Es decir sólo en esa parte dudo. Ayuda.
Este es el programa completo:
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
public class MiColeccion {
//La clase MiColeccion tendrá dos variable de instancia
//Un Object, para contener la colección de objetos
//y un int que indicará la cant de elementos que actualmente
//tiene la colección.
private Object datos[] = null;
private int len=0 ;
// en el constructor se especifica la capacidad inicial
public MiColeccion(int capacidadInicial)
{
datos = new Object[capacidadInicial];
}
//En el fragmento de código anterior, definimos
//las variables de instancia datos y len
//y un constructor a través del cual el usuario debe especificar
//la capacidad inicial que le quiera dar al array.
// retorna el i-esimo elemento de la coleccion
public Object obtener(int i)
{
return datos[i];
}
// indica cuantos elementos tiene la coleccion
public int cantidad()
{
return len;
}
//A continuación, analizaremos el método insertar cuyo objetivo es insertar un elemento
//en la i-ésima posición del array.
// al array anterior para que el Garbage Collector libere la memoria que ocupa.
//Al final incrementamos el valor de la variable len.
public void insertar(Object elm, int i)
{
if( len==datos.length ) //En este método primero verificamos si la capacidad
{ //del array está colmada.
Object aux[] = datos; //Si esto es así entonces creamos un nuevo array
datos = new Object[datos.length*2]; //con el doble de la capacidad del anterior.
for(int j=0; j<len; j++)
{
datos[j]=aux[j]; //copiamos en este los elementos de la colección y asignamos null
}
aux=null;
}
for( int j=len-1; j>=i; j-- )
{
System.out.println(j);
datos[j+1]=datos[j]; //Luego desplazamos los elementos del array entre la última
} //y la i-ésima posición para poder asignar
datos[i]=elm; // en esta el elemento que se pretende insertar.
len++;
}
//Veamos ahora el método buscar que recorre el array mientras no encuentre
//el elemento que busca.
public int buscar(Object elm)
{
int i=0;
// mientras no me pase del tope y mientras no encuentre...
for( ;i<len && !datos[i].equals(elm); i++ );
// si no me pase entonces encontre, si no... no encontre
return i<len ? i : -1;
}
//El método agregar cuyo objetivo es el de agregar un elemento al final del array se
//resuelve fácilmente invocando al método insertar para insertar el elemento en la
//posición len.
public void agregar(Object elm)
{
insertar(elm,len);
}
//Por último, veremos el código del método eliminar
//que elimina el i-esimo elemento del array desplazando hacia arriba
//los elementos ubicados a partir de la posición i+1.
//Luego decrementa el valor de la variable len
//y retorna el elemento eliminado de la colección.
// elimina un elemento desplazando los demas hacia arriba
public Object eliminar(int i)
{
Object aux = datos[i];
for( int j=i; j<len-1; j++ )
{
datos[j]=datos[j+1];
}
len--;
return aux;
}
}
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
public static void main(String[] args) {
//Ejemplo: muestra una lista de nombres en orden inverso. En el siguiente
//programa, pedimos al usuario que ingrese nombres de personas. Cuando
//finaliza el ingreso de datos mostramos los nombres ingresados en orden inverso al original
//y además, por cada nombre, mostramos la cantidad de letras que tiene.
Scanner scanner = new Scanner(System.in);
// creo una coleccion con capacidad inicial = 5
MiColeccion mc = new MiColeccion(5);
// leo el primer nombre
System.out.println("Ingrese Nombre: ");
String nom=scanner.next();
while( !nom.equals("FIN") )
{
// inserto siempre en la posicion 0
mc.insertar(nom,0);
// leo el siguiente nombre
nom=scanner.next();
}
String aux;
// recorro la coleccion y tomo cada uno de sus elementos
for(int i=0; i<mc.cantidad(); i++ )
{
// el metodo obtener retorna un Object entonces
// entonces tengo que castear a String
aux = (String) mc.obtener(i);
System.out.println(aux +" - "+aux.length()+" caracteres");
}
}
}
Valora esta pregunta


0