elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Error con char y métodos listas
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] 3 Ir Abajo Respuesta Imprimir
Autor Tema: Error con char y métodos listas  (Leído 8,467 veces)
PabloPbl

Desconectado Desconectado

Mensajes: 188


Ver Perfil
Re: Error con char y métodos listas
« Respuesta #10 en: 15 Marzo 2015, 18:49 pm »

^^ exactamente es así como dices xD

En cuanto al método repetido, si que lo llama para hacer comprobaciones con el if:

Código
  1. if(!repetido(empleados, nombre, sueldo)){
  2.                empleados.add(new Empleado(nombre, sueldo));
  3.           }

Ya que ese método devuelve un boolean y sirve para validar.

Salu2.


En línea

Baal_30

Desconectado Desconectado

Mensajes: 248



Ver Perfil
Re: Error con char y métodos listas
« Respuesta #11 en: 15 Marzo 2015, 19:54 pm »

Aaah vale, lo usa para crear o no el nuevo Empleado. Yo a lo que me refería es que no muestre los que se repitan algun dato, pero que si los pueda crear. Supongo que poniendo el if ese dentro del for del main, y en vez de llamar al constructor, que imprima lo que imprime el for, conseguiría el resultado que busco, ¿no?


En línea

«La suerte es el cuidado de los detalles». -Winston Churchill
PabloPbl

Desconectado Desconectado

Mensajes: 188


Ver Perfil
Re: Error con char y métodos listas
« Respuesta #12 en: 15 Marzo 2015, 20:08 pm »

Y tendrías que hacer algo parecido a lo que hice con el sueldo, si entendiste el código no debería ser un problema.

Cualquier duda me dices.
En línea

Baal_30

Desconectado Desconectado

Mensajes: 248



Ver Perfil
Re: Error con char y métodos listas
« Respuesta #13 en: 15 Marzo 2015, 20:49 pm »

Voy a probar! okey cualquier duda te comento ;)

Muchas gracias :D
En línea

«La suerte es el cuidado de los detalles». -Winston Churchill
Baal_30

Desconectado Desconectado

Mensajes: 248



Ver Perfil
Re: Error con char y métodos listas
« Respuesta #14 en: 15 Marzo 2015, 21:05 pm »

No me aclaro :/

He modificado así el código del for para imprimir:

Código
  1. for(int i=0;i<empleados.size();i++){
  2.  if(repetido(empleados, empleados.get(i).getNombre(), empleados.get(i).getSueldo())){
  3.  System.out.println("Empleado "+empleados.get(i).getNombre()+" sueldo "+empleados.get(i).getSueldo());
  4.           }
  5. }


Y el método lo he dejado así :

Código
  1. public static boolean repetido(ArrayList<Empleado> empleados, String nombre, int sueldo){
  2.  
  3.       for(int i=0;i<empleados.size();i++){
  4.            if((empleados.get(i).getNombre().equals(nombre)) || (empleados.get(i).getSueldo()==sueldo)){
  5.                return false;
  6.            }
  7.       }
  8.  
  9.       return true;
  10.  }

Y pruebo creando 3 objetos, y dos de ellos con el mismo nombre, y no me imprime ninguno :/ y si cambio los returns( el false por el true y viceversa) me imprime los 3 aunque se repitan :/

En línea

«La suerte es el cuidado de los detalles». -Winston Churchill
PabloPbl

Desconectado Desconectado

Mensajes: 188


Ver Perfil
Re: Error con char y métodos listas
« Respuesta #15 en: 15 Marzo 2015, 21:32 pm »

Mira este Código:


Clase 1:

Código
  1. import java.util.ArrayList;
  2. import java.util.Scanner;
  3.  
  4. public class Clase1 {
  5.  
  6.    public static void main(String[] args) {
  7.        ArrayList<Empleado> empleados = new ArrayList<Empleado>();
  8.  
  9.        Scanner s = new Scanner(System.in);
  10.  
  11.        while(true) {
  12.            System.out.print("Introduce el nombre del empleado: ");
  13.            String nombre = s.next();
  14.            System.out.println();
  15.  
  16.            System.out.print("Introduce su sueldo: ");
  17.            int sueldo = s.nextInt();
  18.            System.out.println();
  19.  
  20.            empleados.add(new Empleado(nombre, sueldo));
  21.  
  22.            System.out.println("¿Quieres añadir algún empleado más? (S/N)");
  23.            String respuesta = s.next();
  24.            if(respuesta.equalsIgnoreCase("n")) {
  25.                break;
  26.            }
  27.        }
  28.  
  29.        int[] valores = new int[empleados.size()];//En este array vamos guardando todos los valores de los empleados a medida que lo mostramos
  30.        String[] empleadosImprimidos = new String[empleados.size()];
  31.  
  32.        for(int i = 0; i < empleados.size(); i++){//Recorremos todos los empleados agregados
  33.            boolean mostrarEmpleadoActual = true;//Inidicamos si mostramos el usuario actual o no
  34.  
  35.            //Este ciclo se fija si el empleado actual tiene el mismo sueldo que otro empleado, si es asi cambia el valor de la variable
  36.            //mostrarEmpleadoActual por false
  37.            for (int i2 = 0; i2 < valores.length; i2++) {
  38.                if(empleados.get(i).getSueldo() == valores[i2]) {
  39.                    mostrarEmpleadoActual = false;
  40.                    break;
  41.                }
  42.            }
  43.  
  44.            if(mostrarEmpleadoActual == true) {
  45.                for(int i3 = 0; i3 < empleadosImprimidos.length; i3++) {
  46.                    if(empleados.get(i).getNombre().equals(empleadosImprimidos[i3])) {
  47.                        mostrarEmpleadoActual = false;
  48.                        break;
  49.                    }
  50.                }
  51.            }
  52.  
  53.            //Se fija el valor de la variable mostrarEmpleadoActual, si es verdadero mostramos el empleado
  54.            if(mostrarEmpleadoActual) {
  55.                valores[i] = empleados.get(i).getSueldo();
  56.                empleadosImprimidos[i] = empleados.get(i).getNombre();
  57.                empleados.get(i).get();
  58.            }
  59.        }
  60.    }
  61. }
  62.  

Clase Empleado:
Código
  1.  
  2. class Empleado {
  3.    private String nombre;
  4.    private int sueldo;
  5.  
  6.    public Empleado(String nombre, int sueldo){
  7.            this.nombre = nombre;
  8.            this.sueldo = sueldo;
  9.    }
  10.  
  11.    public void get() {
  12.        if(sueldo > 1) {
  13.            System.out.println("Este empleado se llama "+this.nombre+" y su sueldo es de "+this.sueldo+" dolares por mes");
  14.        }
  15.        else if(sueldo >0) {
  16.            System.out.println("Este empleado se llama "+this.nombre+" y su sueldo es de "+this.sueldo+" dolar por mes");
  17.        }
  18.        else{
  19.            System.out.println("Este empleado se llama "+this.nombre+" y no tiene sueldo");
  20.        }
  21.    }
  22.  
  23.    public int getSueldo() {
  24.        return this.sueldo;
  25.    }
  26.  
  27.    public String getNombre() {
  28.        return this.nombre;
  29.    }
  30. }
  31.  
  32.  

Este Código hace todo lo que quieres, tan solo tuve que modificar el for y agregar un array de String y problema solucionado.

Prueba haber que tal.

Salu2.
En línea

PabloPbl

Desconectado Desconectado

Mensajes: 188


Ver Perfil
Re: Error con char y métodos listas
« Respuesta #16 en: 15 Marzo 2015, 22:38 pm »

Te he enviado un MP  ;).
En línea

Usuario Invitado


Desconectado Desconectado

Mensajes: 625



Ver Perfil
Re: Error con char y métodos listas
« Respuesta #17 en: 16 Marzo 2015, 02:57 am »

Hasta donde tengo entendido sobre lo que deseas hacer, lo haría así:

Código
  1. package com.company.app.model.entities;
  2.  
  3. public class Employee {
  4. private Short id;
  5. private String names;
  6. private String surnames;
  7. private Double salary;
  8.  
  9. public Employee() {}
  10.  
  11. public Employee(Short id, String names, String surnames, Double salary) {
  12. super();
  13. this.id = id;
  14. this.names = names;
  15. this.surnames = surnames;
  16. this.salary = salary;
  17. }
  18.  
  19. public Short getId() {
  20. return id;
  21. }
  22.  
  23. public void setId(Short id) {
  24. this.id = id;
  25. }
  26.  
  27. public String getNames() {
  28. return names;
  29. }
  30.  
  31. public void setNames(String names) {
  32. this.names = names;
  33. }
  34.  
  35. public String getSurnames() {
  36. return surnames;
  37. }
  38.  
  39. public void setSurnames(String surnames) {
  40. this.surnames = surnames;
  41. }
  42.  
  43. public Double getSalary() {
  44. return salary;
  45. }
  46.  
  47. public void setSalary(Double salary) {
  48. this.salary = salary;
  49. }
  50.  
  51.  
  52. }

Código
  1. package com.company.app.model.entities;
  2.  
  3. import java.util.ArrayList;
  4.  
  5. public class EmployeeList extends ArrayList<Employee> {
  6. private static final long serialVersionUID = 2924861284507271931L;
  7.  
  8. public EmployeeList() {
  9. super();
  10. }
  11.  
  12. public boolean hasRepeatProperties(Employee employee) {
  13. boolean hasRepeat = false;
  14. for(Employee e : this) {
  15. if(e.equals(employee))
  16. continue;
  17. if(compareProperties(e.getId(), employee.getId())) {
  18. hasRepeat = true;
  19. break;
  20. }
  21. else if(compareProperties(e.getNames(), employee.getNames())) {
  22. hasRepeat = true;
  23. break;
  24. }
  25. else if(compareProperties(e.getSurnames(), employee.getSurnames())) {
  26. hasRepeat = true;
  27. break;
  28. }
  29. else if(compareProperties(e.getSalary(), employee.getSalary())) {
  30. hasRepeat = true;
  31. break;
  32. }
  33. }
  34.  
  35. return hasRepeat;
  36. }
  37.  
  38. private boolean compareProperties(Object first, Object second) {
  39. boolean hasRepeat = false;
  40. if(first instanceof String) {
  41. hasRepeat = first.equals(second);
  42. }
  43. else if (first instanceof Short){
  44. hasRepeat = ((Short) first).shortValue() == ((Short) second).shortValue();
  45. }
  46. else if (first instanceof Double) {
  47. hasRepeat = ((Double) first).doubleValue() == ((Double) second).doubleValue();
  48. }
  49.  
  50. return hasRepeat;
  51. }
  52.  
  53. }

Código
  1. package com.company.app;
  2.  
  3. import java.util.Scanner;
  4.  
  5. import com.company.app.model.entities.Employee;
  6. import com.company.app.model.entities.EmployeeList;
  7.  
  8. public class Main {
  9.  
  10. public static void main(String[] args) {
  11. EmployeeList employeeList = new EmployeeList();
  12. Scanner reader = new Scanner(System.in);
  13. String option = "S";
  14.  
  15. do {
  16. Employee employee = new Employee();
  17. System.out.println("Ingrese el ID del nuevo empleado");
  18. employee.setId(Short.valueOf(reader.nextLine()));
  19. System.out.println("\nIngrese sus nombres:");
  20. employee.setNames(reader.nextLine());
  21. System.out.println("\nIngrese sus apellidos");
  22. employee.setSurnames(reader.nextLine());
  23. System.out.println("Ingrese su salario");
  24. employee.setSalary(Double.valueOf(reader.nextLine()));
  25. employeeList.add(employee);
  26. System.out.println("\n¿Desea seguir agregando empleados? S/N");
  27. option = reader.nextLine();
  28. }
  29. while(option.equalsIgnoreCase("s"));
  30. reader.close();
  31.  
  32. for(Employee employee : employeeList) {
  33. if(employeeList.hasRepeatProperties(employee))
  34. continue;
  35. System.out.println("ID del empleado: "+employee.getId());
  36. System.out.println("Nombres: "+employee.getNames());
  37. System.out.println("Apellidos: "+employee.getSurnames());
  38. System.out.println("Salario: "+employee.getSalary());
  39. }
  40.  
  41. }
  42.  
  43. }

Claro que está demás decir que tienes que manejar las excepciones que pueden ocurrir (NumberFormatException, InputMismatchException).
En línea

"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein
PabloPbl

Desconectado Desconectado

Mensajes: 188


Ver Perfil
Re: Error con char y métodos listas
« Respuesta #18 en: 16 Marzo 2015, 03:32 am »

Hola Gus, estuve viendo un poco tu código y vi una parte en la que obtenías los datos desde la clase Scanner:

Código
  1. System.out.println("Ingrese el ID del nuevo empleado");
  2. employee.setId(Short.valueOf(reader.nextLine()));
  3. System.out.println("\nIngrese sus nombres:");
  4. employee.setNames(reader.nextLine());
  5. System.out.println("\nIngrese sus apellidos");
  6. employee.setSurnames(reader.nextLine());
  7. System.out.println("Ingrese su salario");
  8. employee.setSalary(Double.valueOf(reader.nextLine()));
  9. employeeList.add(employee);
  10. System.out.println("\n¿Desea seguir agregando empleados? S/N");
  11. option = reader.nextLine();

y la pregunta es, ¿La clase Scanner solo puede obtener un tipo de dato en particular?

¿Esto estaría mal?
Código
  1. Scanner scanner = new Scanner(System.in);
  2. String nombre = sca.nextLine();
  3. int edad = sca.nextInt();
  4.  

Y ¿Esto estaría bien?
Código
  1. Scanner scanner = new Scanner(System.in);
  2. String nombre = sca.nextLine();
  3. int edad = Integer.parseInt(sca.nextLine());
  4.  

La duda surge, por que estaba haciendo un par de cosas con esta clase y pues obtenía datos diferentes y me daba error, pero no si era por eso.
En línea

Usuario Invitado


Desconectado Desconectado

Mensajes: 625



Ver Perfil
Re: Error con char y métodos listas
« Respuesta #19 en: 16 Marzo 2015, 04:07 am »

Ambas formas son válidas. La razón por la que uso el nextLine es por preferencia personal.

Por ejemplo, cuando lees un entero, Scannet te devuelve lo ingresado pero el enter que das se guarda en el input por lo que si seguidamente llamas a nextLine, éste método leerá lo que ha quedado en el input y el resultado es la percepción que se ha dado un enter automáticamente. Para evitar ésto debes de llamar al método nextLine solo para que lea el enter dejado por el nextInt y a continuación puedes seguir guardando Strings.

Usando solo nextLine me evito ésto y solo tendría que poner un catch para NumberFormatException.

Saludos.
En línea

"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein
Páginas: 1 [2] 3 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
listas enlazadas - ver error
.NET (C#, VB.NET, ASP)
Choclito 3 4,580 Último mensaje 26 Agosto 2009, 18:47 pm
por raul338
ERROR excepcion: char* = char* + n « 1 2 »
Programación C/C++
x64core 10 5,618 Último mensaje 21 Enero 2012, 20:20 pm
por Eternal Idol
Error al definir array char en DEV-CPP
Programación C/C++
DA KILLER 6 3,883 Último mensaje 27 Febrero 2012, 13:39 pm
por satu
[C] Error Conversión String to Char
Programación C/C++
MeCraniDOS 3 3,178 Último mensaje 31 Marzo 2013, 18:31 pm
por avesudra
Metodos con listas
Java
rmkevs 2 2,085 Último mensaje 19 Junio 2016, 03:37 am
por hectornunezrivas
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines