Java - ayuda urgente arrays

 
Vista:

ayuda urgente arrays

Publicado por miguel angel (3 intervenciones) el 09/02/2013 00:31:46
Hola, me piden dos métodos uno de ellos para buscar cuántos elementos repetidos hay en un array(ordenado) y el otro para construir un array nuevo sin dichos elementos
El error está(o eso creo) en el segundo método a la hora de eliminar los elementos repetidos pero no se exactamente cómo hacerlo, sé que es un ejercicio muy fácil pero estoy iniciándome en esto y ando un poco perdido aún. Gracias de antemano
Saludos!
Aquí le dejo el código:

public static int duplicados(int a[]){
if(a==null) return 0;
boolean ordenado=true;
for(int i=0; i<a.length-1; i++){
if(a[i]>a[i+1]) ordenado=false;
}
int cont=0;
if(ordenado==false) return 0;
else{
for(int i=0; i<a.length; i++){
for(int j=0; j<a.length; j++){
if(a[i]==a[j] && i!=j){
cont++;
}
} }
return cont;
}}
public static int [] eliminarDuplicados(int a[]){

int res[]=new int[a.length -duplicados(a)];
int index=0;

for(int i=0; i<a.length; i++){
for(int j=0; j<a.length; j++)
if(a[i]!=a[j]){
res[index]=a[i];
index++;
}
System.out.print(res[i] + " ");
}

return res;

}
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

ayuda urgente arrays

Publicado por Erwin Alonso (3 intervenciones) el 09/02/2013 03:33:24
intenta con lo siguiente

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
package javaapplication1;
 
import javax.swing.JOptionPane;
 
/**
 *
 * @author Alonso
 */
public class JavaApplication1 {
    static int n=10; // n  ES EL MAXIMO DE NUMEROS EN NUESTRO VECTOR
    static int vector[]=new int[n], vecNew[]=new int[n], total=0; // TENEMOS LOS 2 VECTORES
 
    public static void main(String[] args) {
 
        //LLENAMOS EL VECTOR CON NUMEROS ALEATORIOS
           for(int con=0;con<n;con++)
        {
            vector[con] = (int) (Math.random()*10);
            System.out.println(vector[con]);
        }
 
int aux = 0; /*Lo necesitamos para resetear lo contado y empezar de 0 nuevamente */
for(int i=0;i<vector.length;i++){
for(int j=0;j<vector.length;j++){
if(i!=j && vector[i] == vector[j]){ /*La primera condicion es para q no cuente el mismo*/
vector[j] = -99999;/*Este echo es para que no cuente dos veces o mas el mismo #*/
aux++;/*Aumentamos en uno cada ves que se repita*/
}
}
if(vector[i] != -99999){/*para que solo nos muestre los valores que necesitamos*/
System.out.println("El número: "+vector[i]+" se repite: "+aux+" veces");
 
        vecNew[i]=vector[i];
        total++;
}
aux = 0;/*Reseteamos lo contado para la siguiente iteracción*/
}
        for(int c=0;c<total;c++)
        {
          System.out.println("- SIN REPETIR ["+vecNew[c]+"]");
        }
}
}


viene todo explicado
saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

ayuda urgente arrays

Publicado por Tom (1831 intervenciones) el 09/02/2013 09:42:43
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public static int[] eliminarDuplicados(int a[]) {
	int res[] = new int[a.length < duplicados(a)];
	int i = 0, j = 0;
 
	for(; i < a.length; i++) {
		if(i > 0) {
			if(a[i] == a[i - 1]) {
				continue;
			}
		}
		res[j] = a[i];
		j++;
	}
	return res;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

ayuda urgente arrays

Publicado por miguel angel (3 intervenciones) el 09/02/2013 13:10:36
Gracias!! bien explicado!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar