Duvida sobre vetores , comparação entre vetores

9 respostas
fuzybr
import javax.swing.JOptionPane;


public class compararvetor {

	public static void main(String[] args) {
		int vetoree[] = new int [5];
		
		for (int i=0;i<5;i++){
			String aux0 = JOptionPane.showInputDialog("Insira o Código do produto");             
            vetoree[i]= Integer.parseInt(aux0);  
		}
		for (int i=0;i<5;i++){
			System.out.println ("O codigo do produto "+i+" é : "+vetoree[i]);
		}

	}

}

Preciso de ajuda para implementar um codigo que compare o codigo digitado com os ja digitados anteriores , e se for igual o programa avise ao usuario.

Ex: o cara digitou os seguintes codigos (1,2,3) ai na hora de digitar o quarto codigo ele pegue esse ultimo codigo digitado e compare com os antes digitados.

GRATO !

9 Respostas

J

Por exemplo:

String aux0 = "";
int flag = 0;

while(flag!=1){
flag = 1; //Flag recebe 1
aux0 = JOptionPane.showInputDialog("Insira o Código do produto");  //Usuário digita o valor
for(int x = 0; x<vetoree.size(); x++){
     if(Integer.parseInt(aux0) == vetoree[x]) flag = 0; //Se, em qualquer um das posições do vetor houver um valor semelhante,     
                                                                              // flag=0, e então volta ao inicio
}

}
fuzybr
import javax.swing.JOptionPane;


public class olokobitcho {

	public static void main(String[] args) {
		int vetoree[] = new int [5];
		
		for (int i=0;i<5;i++){
		    String aux0 = "";  
		    int flag = 0;  
		      
		    while(flag!=1){  
		    flag = 1;                                                          //Flag recebe 1  
		    aux0 = JOptionPane.showInputDialog("Insira o Código do produto");  //Usuário digita o valor  
		    for(int x = 0; x<vetoree.length; x++){  
		         if(Integer.parseInt(aux0) == vetoree[x]) flag = 0;            //Se, em qualquer um das posições do vetor houver um valor semelhante,       
		                                                                       // flag=0, e então volta ao inicio  
		    }}}
		for (int i=0;i<10;i++){
			System.out.println ("O codigo do produto "+i+" é : "+vetoree[i]);
		}}}

ficaria assim ?
nao deu

nel

Tente:

public static void main(String[] args) { Integer[] inteiros = new Integer[] {10, 5, 8, 7}; List<Integer> list = Arrays.asList(inteiros); if(list.contains(10)) { System.out.println("Número já existente"); } else { System.out.println("Número não cadastrado."); } }

fuzybr

nel:
Tente:

public static void main(String[] args) { Integer[] inteiros = new Integer[] {10, 5, 8, 7}; List<Integer> list = Arrays.asList(inteiros); if(list.contains(10)) { System.out.println("Número já existente"); } else { System.out.println("Número não cadastrado."); } }

:thumbdown:

Eric_SantAnna

Sei que não é exatamente o que você quer (você quer resolver o seu problema com arrays), mas vou te dar uma dica:

O máximo que puder, use uma Collection no lugar de um array, existem várias classes de Collection, uma para cada situação…

No seu caso, use uma ArrayList!

Ex.:

ArrayList&lt;String&gt; lista = new ArrayList&lt;String&gt;(); // Criei uma lista de Strings
lista.add("9876"); // Adicionei uma string à minha lista
lista.get(i); // Obtenho o valor dentro de um for como um array normal

// Esse é um for turbinado, que lista todas as Strings da minha lista for(String codigo : lista) { System.out.println(codigo); }

// o método contains testa se um certo valor existe dentro da lista if(lista.contains("9876") { System.out.println("A lista contém o código 9876"); }

Pode ser uma lista de int (ArrayList<Integer>), double (ArrayList<Double>) e qualquer outra classe (ArrayList<Aluno>).

Collections, como o ArrayList que dei o exemplo é bem mais prático que um array normal, menos gambiarra, o código fica mais limpo e mais profissional…além de ser ilimitado, não precisa definir um valor máximo pra sua lista…

Existem várias outras classes de Collection, ex:
LinkedHashSet // Lista sem duplicatas
TreeSet // Lista ordenada
HashMap // Lista de pares de valores (chave, valor)

Dá uma estudada nisso, vale a pena!

nel

fuzybr:
nel:
Tente:

public static void main(String[] args) { Integer[] inteiros = new Integer[] {10, 5, 8, 7}; List<Integer> list = Arrays.asList(inteiros); if(list.contains(10)) { System.out.println("Número já existente"); } else { System.out.println("Número não cadastrado."); } }

:thumbdown:

Você viu que são objetos Integer e não tipos primitivos, certo?
E outra, esse código funciona perfeitamente, teste aqui e não houve erro.
O que rolou ai?

Poste seu código completo com essa alteração.

fuzybr
nel:
fuzybr:
nel:
Tente:
public static void main(String[] args) {
		Integer[] inteiros = new Integer[] {10, 5, 8, 7};
		List<Integer> list = Arrays.asList(inteiros);
		if(list.contains(10)) {
			System.out.println("Número já existente");
		} else {
			System.out.println("Número não cadastrado.");
		}
	}

:thumbdown:

Você viu que são objetos Integer e não tipos primitivos, certo?
E outra, esse código funciona perfeitamente, teste aqui e não houve erro.
O que rolou ai?

Poste seu código completo com essa alteração.

import javax.swing.JOptionPane;  
      
      
    public class compararvetor {  
      
        public static void main(String[] args) {  
            int vetoree[] = new int [5];  
              
            for (int i=0;i<5;i++){  
                String aux0 = JOptionPane.showInputDialog("Insira o Código do produto");               
                vetoree[i]= Integer.parseInt(aux0);    
            }  
            for (int i=0;i<5;i++){  
                System.out.println ("O codigo do produto "+i+" é : "+vetoree[i]);  
            }  
      
        }  
      
    }

preciso implementar isso que vc disse aqui .. apenas isso ;]

doravan

Não fui tão objetivo, mas ficou resolvido só com array.
Use um wrapper Integer que aceite null.

public static void main(String[] args) {    
	Integer[] integerArray = new int [5];    
		
	for (int i=0;i<5;i++){    
		String aux0 = JOptionPane.showInputDialog("Insira o Código do produto");
		Integer existant = Exists(integerArray, Integer.parseInt(aux0));
		if (existant != null)
		{
			System.out.println ("O codigo do produto  é : "+existant);  
		}
		else
			vetoree[i]= Integer.parseInt(aux0);      
	}        
}

public static Integer Exists(Integer[] vectorArray, vectorValue){
	for(int i=0; i<5; i++){
		if (vectorArray[i] == vectorValue)
			return vectorValue[i];
	}
	return null;
}
nel

Era só pensar um pouco...

public static void main(String[] args) {
		Integer vetoree[] = new Integer[5];
		int n = 0;
        while(n != vetoree.length) {    
            String aux0 = JOptionPane.showInputDialog("Insira o Código do produto");
            if(containsValue(vetoree, Integer.parseInt(aux0))) {
            	JOptionPane.showMessageDialog(null, "Código já existente. Por favor, digite outro.");
            } else {
            	vetoree[n]= Integer.parseInt(aux0);
            	n++;
            }
        }   
		    
    }
	
	public static boolean containsValue(Integer[] vet, Integer value) {
		List<Integer> list = Arrays.asList(vet);
		return list.contains(value);
	}

E fiz por cima, dá para melhorar ainda bastante isso ai.

Criado 10 de outubro de 2011
Ultima resposta 10 de out. de 2011
Respostas 9
Participantes 5