Dúvida: verifica se um numero existe no vetor[20]

Pessoal, sou iniciante em java e tenho uma dúvida besta

Como faço para verificar se já existe um numero no vetor[20]

for(i=0;i<20;i++){
num[i] = Integer.parseInt(JOptionPane.showInputDialog(“Digite um número”));
}

Eu acho que você já fez o mais difícil, para ver se é um número, podes usar um laço try/catch usando os métodos da classe Integer ou Double. Dê uma olhadinha na documentação e caso tenha alguma dificuldade, te ajudo nisso.

Até!

Mas a pergunta era se "existe o número" não se "é um número", ou eu que viajei?! :shock:

Bom, para verificar se é um número vc deve fazer como sugeriu o maquiavel.

Seguindo sua idéia, para verificar se o número está no vetor, pode ser assim (usando a sua idéia inicial):

int numero = Integer.parseInt(JOptionPane.showInputDialog("Digite um número")); for(int i = 0; i < 5; i++){ if (num[i] == numero) System.out.println("é igual"); }

Perguntou se existe um número(tipo), não se existe um número específico (objeto).
Ai como a língua lusitana nos falta!

Até!

Na verdade, preciso montar uma condição simples:

  1. Tenho um vetor[20] do tipo inteiro
  2. Quando usuário digitar um numero e esse número não existir no vetor, o sistema permite cadastrar o código do produto, senão envia uma mensagem que já existe código do produto cadastrado.

Obs: estou fazendo um trabalho da faculdade que envolve manipulação de arquivo, métodos e objetos, conforme tenho uma dúvida solicito ajuda.

Estou grato pelas dicas e orientações.

[quote=Sergio Prado]Na verdade, preciso montar uma condição simples:

  1. Tenho um vetor[20] do tipo inteiro
  2. Quando usuário digitar um numero e esse número não existir no vetor, o sistema permite cadastrar o código do produto, senão envia uma mensagem que já existe código do produto cadastrado.

Obs: estou fazendo um trabalho da faculdade que envolve manipulação de arquivo, métodos e objetos, conforme tenho uma dúvida solicito ajuda.

Estou grato pelas dicas e orientações.

[/quote]
vector brasil[20];

int numero = Integer.parseInt(JOptionPane.showInputDialog(“Digite um número”));

for(int i = 0; i < brasil.length; i++){

if(! (num[i].getNumero_produto()== numero)

          produto x= new Produto();

else System.out.println(“produto existente”);

*getNumero_produto()-> este metodo tem de retornar o numero do produto ou seja tens de ter um atributo para o numero do produto

Creio que eu tenha entendido como a Renata, e acho que a maneira mais fácil de você entender, já que está começando é pelo código dela, se o número (código), for igual a algum cadastrado, exibe uma mensagem adequada, lembrando de percorrer o vetor do começo ao fim (0 a 19).

ai e o k foi que eu postei?
só entropia :oops:

Ops! Eu usei um vetor com 5 elementos pra testar e acabei colocando o código pra ele desse jeito… foi mal… :oops:

Ops! Eu usei um vetor com 5 elementos pra testar e acabei colocando o código pra ele desse jeito… foi mal… :oops: [/quote]

ah manda mal pra mim tb… :oops: :oops: :oops: :oops:

RenataFA, Alkamavo e Thiago Domingues obrigado pelas dicas e idéias de vocês, aproveitando, tenho um exemplo claro do que preciso.

1) Só posso vender uma passagem se e somente a mesma não estiver ocupada

[code]public class passageiro{

//Atributos
private String nome, rg;
private int poltrona;

//Metodos de acesso getXxx
public String getNome() {
	return nome;
}
public String getRg() {
	 return rg;
}

public int getPoltrona() {
	 return poltrona;
}
//Metodos de acesso setXxx
public void setNome(String n) {
	 nome = n;
}
public void setRg(String r) {
	 rg = r;
}

public void setPoltrona(int p) {
	 poltrona = p;
}

}[/code]
2) No método main criei três array
3) Aqui o usuário digita um número da poltrona, se a poltrona já estiver ocupada, o sistema envia mensagem “Poltrona ocupada”, e ainda tenho que criar um método para verificar se a poltrona é do corredor ou janela.

[code]import javax.swing.*;
public class usaPassageiro {
public static void main(String args[]){

	int i;
	passageiro p = new passageiro();		
	String aux_nome[] = new String[20];
	String aux_rg[] = new String[20];
	int aux_poltrona[] = new int[20];
	
	for(i=0;i<20;i++)
	{
		aux_nome[i] = JOptionPane.showInputDialog("Digite o nome");				
		aux_rg[i] = JOptionPane.showInputDialog("Digite o rg");
		aux_poltrona[i] = Integer.parseInt(
                                                     JOptionPane.showInputDialog("Digite a poltrona"));
		
		p.setNome(aux_nome[i]);
		p.setRg(aux_rg[i]);
		p.setPoltrona(aux_poltrona[i]);
	}
	
	for(i=0;i<3;i++)
	{
		System.out.println("Nome: " + p.getNome());
		System.out.println("Rg: " + p.getRg());
		System.out.println("Nome: " + p.getPoltrona());
		
	
	}
		
} 

}[/code]

4) e depois armazenar os atributos num arquivo.txt.
Tenho material do Guj e apostila estou vendo como vou fazer isso, porém sei que vocês conhecem, temo como criar um método para isso.

Acredito que ficou mais claro agora.

Att.
Sérgio

Ok, vamos tentar fazer vc "andar" mais um pouco no seu projetinho.

Uma dica: Use sempre nome de classes com a primeira letra em maiúscula. É um padrão de nomenclatura seguido, fica melhor.

Bem, agora vamos as suas classes:

  • mantenha sua classe passageiro
  • mude sua classe main para algo parecido com o exemplo que coloquei abaixo

[code]import javax.swing.JOptionPane;

public class usaPassageiro{

    // array para armazenar seus passageiros
    static passageiro[] aPassageiros = new passageiro[20];

public static void main(String args[]){
	
	// loop para pegar todos os passageiros
	for(int i=0;i<20;i++){
		String nome = JOptionPane.showInputDialog("Digite o nome");				
		String rg = JOptionPane.showInputDialog("Digite o rg");
		
		int poltrona = 0; // inicio como poltrona = 0
		while (poltrona == 0 || !poltronaLivre(poltrona)) // fico pedindo a poltrona até que ela seja diferente de 0 e desocupada
			poltrona = Integer.parseInt(JOptionPane.showInputDialog("Digite a poltrona"));	
		
		// crio o objeto passageiro (se preferir pode mudar o construtor pra já passar os parâmetros)
		passageiro p = new passageiro();
		p.setNome(nome);
		p.setRg(rg);
		p.setPoltrona(poltrona);
		
		// adiciono o passageiro na minha lista de passageiros
		aPassageiros[i] = p;
	}
	
	// loop para imprimir todos os passageiros
	for(int i=0;i<aPassageiros.length;i++){
		System.out.println("Nome: " + aPassageiros[i].getNome());
		System.out.println("Rg: " + aPassageiros[i].getRg());
		System.out.println("Nome: " + aPassageiros[i].getPoltrona());
	}

}

/**
 * Verifico se a poltrona de número p passada está livre, ou seja, se ela não pertence a nenhum outro passageiro
 * ainda.
 * @param p
 * @return
 */
private static boolean poltronaLivre(int p){
	
	for(int i = 0; i >< aPassageiros.length; i++){
		if (p == aPassageiros[i].getPoltrona()){
			System.out.println("Poltrona ocupada!!!");
			return false;
		}
	}
	
	return true;
}

}[/code]

Olha, na sinceridade, não tive tempo de testar, mas veja que deve ser algo por ai.

É possivel converter um array em uma lista e, assim, verificar se contem algum elemento:

[code]import java.util.Arrays;

public class A{
public static void main (String… x){
Integer y[] = new Integer[]{1,2,3};

            System.out.println("contem 3? " + Arrays.asList(y).contains(3));
            System.out.println("contem 5? " + Arrays.asList(y).contains(5));
    }

}[/code]

$ java A contem 3? true contem 5? false

[quote=everson_z][quote= .RenataFA]

/**
 * Verifico se a poltrona de número p passada está livre, ou seja, se ela não pertence a nenhum outro passageiro
 * ainda.
 * @param p
 * @return
 */
private static boolean poltronaLivre(int p){
	...
	return true;
}

}[/code][/code]
[/quote]

Isso esta certo?

@param p

:?: [/quote]

Vc se refere ao @param p ?

Qual o problema com ele? Pq não estaria certo?!

Não everson!

Eu criei isso ai correndo só pra criar um exemplo pro nosso amigo com problema. Eu NUNCA criaria uma variável com o nome de “p”. Eu não fiz comentários adequados, eu apenas digitei /**<enter> (para escrever o comentário) e o Eclipse colocou o resto sozinho.

Eu não estava ensinando ngn a fazer comentários adequados e não programei esse trechinho de código pensando em como ficaria a documentação. Eu nem salvei isso ai, só fiz na IDE pra ficar mais alinhado e evitar erro de sintaxe!

O eclipse tem a mani de criar isso para incentivar os newbissimos a criar Documentação…basta criares uma nova class e akilo aprece sempre…

Pessoal, estou começando minha caminhada em orientação a objetos, para ser sincero estou utilizando o JCreator para desenvolver os trabalhos e pretendo me aprofundar cadas vez mais em Java.

RenataFA, eu executei a classe principal main e apresentou erro de compilação e não consegui identificar o seguinte erro

Exception in thread “main” java.lang.NullPointerException
at usaPassageiro.poltronaLivre(usaPassageiro.java:47)
at usaPassageiro.main(usaPassageiro.java:16)

Não sei se é nessa linha
// fico pedindo a poltrona até que ela seja diferente de 0 e desocupada
while (poltrona == 0 || !poltronaLivre(poltrona))

Também estou desenvolvendo uma classe para inserir no arquivo, depois vou postar aqui para saber opnião de vocês que conhencem e tem vivência em programação.

Grato
Sérgio

Esqueci de uma consistência. Tente agora:

[code]import javax.swing.JOptionPane;

public class UsaPassageiro{

static Passageiro[] aPassageiros = new Passageiro[20];

public static void main(String args[]){
	
	// loop para pegar todos os passageiros
	for(int i=0;i<20;i++){
		String nome = JOptionPane.showInputDialog("Digite o nome");				
		String rg = JOptionPane.showInputDialog("Digite o rg");
		
		int poltrona = 0; // inicio como poltrona = 0
		while (poltrona == 0 || !poltronaLivre(poltrona)) // fico pedindo a poltrona até que ela seja diferente de 0 e desocupada
			poltrona = Integer.parseInt(JOptionPane.showInputDialog("Digite a poltrona"));	
		
		// crio o objeto passageiro (se preferir pode mudar o construtor pra já passar os parâmetros)
		Passageiro p = new Passageiro(nome, rg, poltrona);
		
		// adiciono o passageiro na minha lista de passageiros
		aPassageiros[i] = p;
	}
	
	// loop para imprimir todos os passageiros
	for(int i=0;i<aPassageiros.length;i++){
		System.out.println("Nome: " + aPassageiros[i].getNome());
		System.out.println("Rg: " + aPassageiros[i].getRg());
		System.out.println("Nome: " + aPassageiros[i].getPoltrona());
	}

}

/**
 * Verifico se a poltrona de número p passada está livre, ou seja, se ela não pertence a nenhum outro passageiro
 * ainda.
 * @param p
 * @return
 */
private static boolean poltronaLivre(int p){
	
	for(int i = 0; i >< aPassageiros.length; i++){
		// como já configurei que o array terá 20 posições, ele percorre até 20, só quem nem sempre tem um passageiro na posição
		// do array, a posição pode estar null, por isso tava dando aquele erro.
		if ((aPassageiros[i] != null) && (p == aPassageiros[i].getPoltrona())){
			System.out.println("Poltrona ocupada!!!");
			return false;
		}
	}
	
	return true;
}

public static class Passageiro{
	
	// Atributos
	private String nome, rg;
	private int poltrona;
	
	public Passageiro(){}
	
	public Passageiro(String nome, String rg, int poltrona){
		this.nome     = nome;
		this.rg       = rg;
		this.poltrona = poltrona;
	}

	public String getNome() {
		return nome;
	}
	
	public String getRg() {
		 return rg;
	}

	public int getPoltrona() {
		 return poltrona;
	}

	public void setNome(String nome) {
		 this.nome = nome;
	}
	
	public void setRg(String rg) {
		 this.rg = rg;
	}

	public void setPoltrona(int poltrona) {
		 this.poltrona = poltrona;
	}
}	

}
[/code]

RenataFA, obrigado pela ajuda, só daqui um tempo vou ser seu concorrente hein!!! brincadeira
É que cada vez estou gostando mais de Java.


Criei esse método para inserir em um arquivo, seria mais ou menos isso mesmo?

[code]public static void insereNoArquivo(String nome, String rg, int poltrona){
File f= new File(“arq.txt”);

	try{
		FileWriter fw = new FileWrite(f);
		
		BufferedWriter escrita = new BufferedWriter(fw);

		escrita.write(nome);
		escrita.write(rg);
		escrita.write(poltrona);

		escrita.newLine();
		
		escrita.close();
	}
	catch(IOException ex){
		System.out.println("\n Prolemas com o arquivo");
	}

}[/code]

OLha, aparentemente é isso msm. Vc testou? Está gravando?