Array unidimensional

10 respostas
F

Tenho q fazer um applet que leia uma quantidade determinada de inteiros a partir de um JTextField. E exiba-os em uma JTextArea se, e somente se, este número ainda não foi digitato.

O problema é o seguinte: não estou conseguindo imaginar como vou fazer para verificar se o número digitado já foi registrado no array ou não.

Vou postar o exercicio completo aqui:

Utilize um array unidimensional para resolver o seguinte problema: escrever um applet que leia 20 inteiros. A medida que cada número for lido, exiba-o somente se ele não tiver sido lido. Previna-se para o pior caso em que todos os 20 números sao diferentes. Utilize o menor array possivel para resolver este problema.

10 Respostas

G

TOO EASY!

A cada vez que ele digitar um número no textfield vc pode fazer a verificação se o número está contino na array…

Se não estiver ainda vc grava na array, caso contrário vc pode retornar uma mensagem alertando que o número já foi digitado.

F

Grande guvilla :grin: , obrigado por tentar ajudar. O problema meu é o que você mesmo disse. Eu não consigo fazer um laço para verificar o número digitado com os existentes no array. Eu tenho a resposta em mente só que não estou conseguindo passa-la para o código. Sei que tenho que comparar o número digitado com cada elemento do array.

Valeu

F

Cara dá uma olhada na API do Java, e veja se você acha um método que procura um elemento em um arraylist....

Mas vou quebrar seu galho... rs

faça assim ó: (pode ser que tenha algum erro, pois não testei esse código, mas já dá pra você começar):

public class Testaint{
int numero;

 ArrayList b = new ArrayList()

  //retorna se o objeto já faz parte da coleção.
  public boolean testaNum(int numero){
     return  b.contains(int numero);
        }
}

Acho que isso serve...

té +++

F

Ae feliperod, ainda nao conhecia essa classe. Procurei como usá-la mas não consegui, tentei dessa forma como vc mostrou mas nao deu certo. Tem como me dar uma luz?? Postei meu codigo

Obrigado
Fernando

import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

import java.util.*;

public class Ex13 extends JApplet implements ActionListener {
	
	JLabel numeroLabel, areaLabel;
	JTextField numeroField;
	JTextArea saidaArea;
	JScrollPane rolagemPane;
	
	int duplicata[] = new int[ 20 ];	
	
	int counter = 0;
	
	String saida = "";	
	
	public void init()
	{		
		Container container = getContentPane();
		container.setLayout( new FlowLayout() );
		
		numeroLabel = new JLabel( "Número" );
		container.add( numeroLabel );
		numeroField = new JTextField( 4 );
		container.add( numeroField );
		
		numeroField.addActionListener( this );
		
		areaLabel = new JLabel( "Números já impressos" );
		container.add( areaLabel );
		
		saidaArea = new JTextArea( 8, 20 );		
		rolagemPane = new JScrollPane( saidaArea );
		container.add( rolagemPane );		
	}
	
	ArrayList duplicataList;
	
	public void actionPerformed( ActionEvent e )
	{
		int numero = Integer.parseInt( e.getActionCommand() );	
		
		duplicataList = new ArrayList();
		
		if( duplicataList.contains( numero ) )
			showStatus( "Já digitado" );		
	}	
}
D

dae kra blz, fiz um programinha bem simples que não usa nenhuma classe em especial, soh defini uma função pra verificar se o vetor já contém determinado número... dá uma olhada, e altere ele para o seu caso ae, qualquer dúvida sobre o código é só perguntar...

import javax.swing.*;

public class programa{ 
   public static void main(String argumentos[]){
   		int y = Integer.parseInt( JOptionPane.showInputDialog( "Qtd de Numeros: " ));
   		int[] n = new int[y];
   		for ( int i = 0; i < n.length; i++ ) {
   			int z = Integer.parseInt( JOptionPane.showInputDialog( "Numero: "+(i+1) ));
   			if (consulta( n, z)) {
   				JOptionPane.showMessageDialog( null, "Numero  existe!!!\nDigite novamente" );
   				i--;
   			}
   			else {
   				n[i] = z;
   			}
   		}
   		
   		JTextArea area = new JTextArea(10,10);
   		for ( int i = 0; i < n.length; i++ ) {
   			area.append( n[i] + "\n");
   		}
   		JOptionPane.showMessageDialog( null, area );
   		System.exit(0);
   }
   
   public static boolean consulta( int[] x, int n ) {
		for ( int i = 0; i < x.length; i++ ) {
			if (x[i] == n)
				return true;
		}
		return false;
	}
	
}

flw ae

F

Grande Dilton.
Era isso mesmo que eu estava querendo fazer, tenho q praticar muito ainda pra chegar ao seu nível.

valeu mesmo

Fernando

F
"fernandoo":
Ae feliperod, ainda nao conhecia essa classe. Procurei como usá-la mas não consegui, tentei dessa forma como vc mostrou mas nao deu certo. Tem como me dar uma luz?? Postei meu codigo

Obrigado
Fernando

import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

import java.util.*;

public class Ex13 extends JApplet implements ActionListener {
	
	JLabel numeroLabel, areaLabel;
	JTextField numeroField;
	JTextArea saidaArea;
	JScrollPane rolagemPane;
	
	int duplicata[] = new int[ 20 ];	
	
	int counter = 0;
	
	String saida = "";	
	
	public void init()
	{		
		Container container = getContentPane();
		container.setLayout( new FlowLayout() );
		
		numeroLabel = new JLabel( "Número" );
		container.add( numeroLabel );
		numeroField = new JTextField( 4 );
		container.add( numeroField );
		
		numeroField.addActionListener( this );
		
		areaLabel = new JLabel( "Números  impressos" );
		container.add( areaLabel );
		
		saidaArea = new JTextArea( 8, 20 );		
		rolagemPane = new JScrollPane( saidaArea );
		container.add( rolagemPane );		
	}
	
	ArrayList duplicataList;
	
	public void actionPerformed( ActionEvent e )
	{
		int numero = Integer.parseInt( e.getActionCommand() );	
		
		duplicataList = new ArrayList();
		
		if( duplicataList.contains( numero ) )
			showStatus( " digitado" );		
	}	
}

Que bom que deu certo da forma que o Dilton passou, mas usando o ArrayList seria muito mais simples.

Você só esquece de adicionar no duplicatalist o número. Como ele vai testar um numero que não foi adicionado?
O que você precisa é criar um método que teste se o número existe, e caso não exista, adicione os números que o cara digita no ArrayList.

Por exemplo:
// ArrayList duplicatalist;  deve estar declarada como atributo da classe;
//duplicatalist = new ArrayList();  deve estar no construtor da classe.

public void inserirNumero(int numero){

   if(duplicatalist.contains(numero)){
           showStatus(" Digitado");
  }else{
     duplicatalist.add(numero);
  }
}

Assim é para dar certo. É claro que o que o Dilton fez funciona, mas porque ter que reinventar a roda toda vez que temos um problema, se podemos usar as classes prontas para tal tarefa.

Dá uma procurada sobre um tutorial sobre Coleções.

Qualquer dúvida fico feliz em poder ajudar.

té +

D

“fernandoo”:
Grande Dilton.
Era isso mesmo que eu estava querendo fazer, tenho q praticar muito ainda pra chegar ao seu nível.

valeu mesmo

Fernando

q issu kra, todo mundo aki tah aprendendo, e com certeza praticar eh o melhor meio pra issu… :wink:

“feliperod”:
Assim é para dar certo. É claro que o que o Dilton fez funciona, mas porque ter que reinventar a roda toda vez que temos um problema, se podemos usar as classes prontas para tal tarefa.

concordo plenamente felipe, soh q qdo u kra tah começandu e sempre bom fazer alguma coisa na mao pru kra ir pegandu a logica. Mas sem duvida nenhuma fica muito melhor usandu as classes prontas. Além de tudo, esse eh um dos pontos principais em Java, a reutilização de softwares, de classes… :joia:

flw ae

F

o foda é que tem apenas 3 meses q estou mexendo com Java. e estou aprendendo por conta propria. estou me esforçando mesmo. dae estou fazendo os exercicios que meu livro pede. quando nao consigo peço ajuda. quando eu estiver programando legal, vou correr atras do pacote API pra melhorar, desempenho, arquitetura,…

valeu pela força galera

F

É isso ai…

mas pelo menos agora ele já sabe duas formas de se fazer a mesma coisa.

Isso é bom pra já ir pegando o jeito…

Valeu pessoal… :wink: :wink: :wink:

Criado 4 de novembro de 2004
Ultima resposta 7 de nov. de 2004
Respostas 10
Participantes 4