Foro sobre Java SE > Ayuda Please [Arrays]
//itera a traves del arreglo
for(int i=0;i<TAMANIO;i++)
Ahí empiezas a recorrer el array para designar el número comprobar.
25,35,45,45,55 Estos son los números que has introducido.
Como ahora i = 0, vas a comprobar el 25.
for(int j=i+1;j<TAMANIO;j++)
este el el bucle para comparar y lo empiezas en la posición que sigue a la del numero que quieres comprobar.
Cuando llega el segundo 45 sólo lo comparas con el 55, con lo que no está repetido y te lo imprime.
Hola jmtu. Primero gracias por responder :) Te comento que ya tengo el code como queria que funcione:
el método correcto es así:
public void getDatosUnicos()
{
//itera a traves del arreglo
for(int i=0;i<TAMANIO;i++)
{
// establece por defecto imprimir a SI
imprimir = Estado.SI;
// itera a traves del arreglo para poder comprar los valores
for(int j=0;j<TAMANIO;j++)
{
// mientras que i sea diferente a j se efecuta la comparacion,
// por que si se compara a sí mismo, dará error de ejecución
if (i != j){
// si encuentra valores iguales, cambia imprimir a NO
if(numeros[i]==numeros[j])
{
imprimir = Estado.NO;
}
} // de esta manera, cada elemento del arreglo se compara con todos los demás
// menos con él mismo
} // fin for externo
// si no se han encontrado valores iguales, se imprime el 1er elemento del array
if (imprimir == Estado.SI)
System.out.println(numeros[i]);
} // fin for externo
} // fin metodo
Saludos!
Espero sea de tu ayuda:
public static void main(String[] args) {
int[] numeros = {1,2,3,4,5,5,6,6};
boolean flag = true;
for (int i = 0; i < numeros.length; i++) {
for (int j = 0; j < numeros.length; j++) {
int val = numeros[i];
int val2 = numeros[j];
if(i!=j){
if(val==val2){
flag = false;
}
}
}
if(flag)
System.out.println(numeros[i]);
}
}
Hola, buenas noches. Verán estoy resolviendo un problema sencillo que trata sobre imprimir los valores no repetidos de un array luego que el usuario haya ingresado los valores. Pero no encuentro la forma de evitar imprimir esos valores repetidos.
Si pueden me echan un cable. Saludos. Les dejo el codigo que tengo:
import java.util.Scanner;
public class NumerosIguales
{
private static final int TAMANIO=5;
private int[] numeros = new int[TAMANIO];
enum Estado {SI,NO};
Estado imprimir;
public void setDatos()
{
int numero;
Scanner t= new Scanner(System.in);
for(int i=0; i<numeros.length; i++)
{
// pedimos que se ingrese un numero entre 10 y 100
System.out.println("Ingrese un numero entero en el rango 10-100");
numero = t.nextInt();
// si el numero ingresado no esta entre ese rango, el programa
// pedira que se ingrese nuevamente el numero, hasta que sea correcto
if(numero<10 || numero>100) {
do {
System.out.println("El numero ingresado no esta en el rango indicado. Ingrese nuevamente");
numero = t.nextInt();
} while(numero<10 || numero>100);
}
// agregamos el valor ingresado al arreglo
numeros[i] = numero;
} // fin for
} // fin metodo
// imprimimos los numeros unicos(No repetidos)
public void getDatosUnicos()
{
//itera a traves del arreglo
for(int i=0;i<TAMANIO;i++)
{
// establece por defecto imprimir a SI
imprimir = Estado.SI;
// itera a traves del arreglo para poder comprar los valores
for(int j=i+1;j<TAMANIO;j++)
{
// si encuentra valores iguales, cambia imprimir a NO
if(numeros[i]==numeros[j])
{
imprimir = Estado.NO;
}
} // fin for externo
// si no se han encontrado valores iguales, se imprime el 1er elemento del array
if (imprimir == Estado.SI)
System.out.println(numeros[i]);
} // fin for externo
} // fin metodo
}
El array lo inicie en: 25,35,45,45,55. Lo que deseo es que muestre:
25,35,55
Pero muestra esto:
Los elementos unicos son:
25
35
45
55