Foro de elhacker.net

Programación => Java => Mensaje iniciado por: hola777 en 26 Noviembre 2013, 23:35 pm



Título: DUDA SOBRE EJERCICIO
Publicado por: hola777 en 26 Noviembre 2013, 23:35 pm
Hola que tal !

El ejercicio que estoy haciendo me dice que programe un formulario mediante clases que permita ingresar numeros a un arreglos sin repeticion

He hecho esto:

CLASE:
public class clase56 {
     private int num[]= new int[20];
    private int n;
    public clase56(){
   
    n=0;
   
    }
   
   
   public void setverificar(String xnum){
         String c="";
        int aux=0;
       num[n]=Integer.parseInt(xnum);
       n=n+1;
 
   for(int k=0;k<n;k++){
   aux=0;
   for(int j=0;j<k;j++){
   
    if(num[k]==num[j]){
   
   aux++;
   if(aux==1){
   JOptionPane.showMessageDialog(null,"numero repetido.. ingrese otro valor");
   
   }
    }
   }
   
    }
   
   
   
   
   
   
    }
   
   
   public String getElemento(){
   
    String cad1,cad2="";
    for(int k=0;k<n;k++){
   
    cad1=String.valueOf(num[k]);
    cad2=cad2+" "+cad1;
    }
   
   
   
   
   
     
    return cad2;
    }
}


Formulario:
clase56 obj56=new clase56();
    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         

        obj56.setverificar(jTextField1.getText());
        jLabel2.setText(obj56.getElemento());
        // TODO add your handling code here:
    }   

pero no llego a lo que quiero ! sugerencias plis!


Título: Re: DUDA SOBRE EJERCICIO
Publicado por: Mitsu en 27 Noviembre 2013, 00:01 am
No lo he probado, pero debería funcionar.

Código
  1. public void readNumbers() {
  2.  
  3.                numeros = new int[20];
  4.  
  5. for(byte indice = 0; indice < numeros.length; indice++) {
  6. String str_numero;
  7. do {
  8. str_numero = JOptionPane.showInputDialog(null,"Ingrese un entero","Entrada de datos",JOptionPane.INFORMATION_MESSAGE);
  9. } while((checkNumber() == false) || (isRepeated(numero,indice)));
  10. int numero = Integer.valueOf(str_numero);
  11. numeros[indice] = numero;
  12. }
  13. }
  14.  
  15. private boolean isRepeated(int numero,int indice) {
  16. if (numero == numeros[indice-1]) {
  17. return true;
  18. }
  19. return false;
  20. }
  21.  
  22. private boolean checkNumber() {
  23.  
  24. try {
  25. Integer.valueOf(str_numero);
  26. return true;
  27. }
  28. catch (NumberFormatException | InputMismatchException e) {
  29. return false;
  30. }
  31. }
  32.  

El primer método hace el ingreso de números por medio de un for, lo hace por medio de un do - while que se iterará mientras no se ingrese un entero o el número esté repetido. Si se ingresa cualquier cosa en vez de un número, el método checkNumber(int numero) atrapa la excepción y devuelve false, indicando que no se ha ingresado un número correctamente. Si se ingresa un número correcto pero que ya está repetido, el método isRepeated(int numero, int índice) devuelve false, por lo que continúa el do - while.


Saludos.