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

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Ayuda con codigo Java
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con codigo Java  (Leído 4,214 veces)
paablitto10

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Ayuda con codigo Java
« en: 26 Abril 2019, 14:13 pm »

no se como realizar un codigo en java. Tengo un String o ArrayList llamando Poderes donde estan dentro : Arco,Inteligencia,fuerza y pocima. Otro String o ArrayList llamado Miguel con : inteligencia,paciencia. Y por ultimo uno llamado Agus con : pocima,inteligencia y invisibilidad.

Tengo que comparar el primer string sobre los otros dos y debe salir esto por pantalla:

Arco-Apariciones : 0, Fuerza-Apariciones : 0, Inteligencia-Apariciones : 2, Pocima-Apariciones : 1


En línea

srWhiteSkull


Desconectado Desconectado

Mensajes: 444



Ver Perfil WWW
Re: Ayuda con codigo Java
« Respuesta #1 en: 27 Abril 2019, 02:54 am »

Lo mejor Pablito es que aprendas fundamentos de la programación y luego programación orientada a objetos aplicado a Java.

Quizás es mejor que aprendas Python y luego cuando sepas programar bien Python saltes a otros lenaguajes con Java o C++ si estás pensando en el desarrollo de aplicaciones de escritorio o programación de videojuegos.



En línea

WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.589


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: Ayuda con codigo Java
« Respuesta #2 en: 27 Abril 2019, 04:36 am »

Cada jugador supongo que debiera estar en una lista de tipo List<>(), entonces para sumar haces una iteración por cada uno y sumas las propiedades, donde la suma total es almacenada en una variable de la clase actual que está procesando todo, así obtendrás las sumas de manera dinámica.

Saludos.
En línea

Beginner Web


Desconectado Desconectado

Mensajes: 634


youtu.be/0YhflLRE-DA


Ver Perfil
Re: Ayuda con codigo Java
« Respuesta #3 en: 27 Abril 2019, 05:19 am »

A mi me surgió una duda acerca de su problema, soy novata en Java y queria saber si se puede modificar el valor de un objeto sin Generics en ArrayList por ejemplo esto

Código
  1. List lista = new ArrayList();
  2.  
  3. lista.add(1);//<-¿Este valor se puede incrementar?
  4. lista.add(cualquierCosa);




Y con respecto al problema en general si debería leer algo de Programación Orientada a Objetos, yo igual soy novata asi que hice esto

Código
  1. package aplicacion.test;
  2.  
  3. import aplicacion.modelo.dominio.Habilidad;
  4. import java.util.ArrayList;
  5. import java.util.List;
  6. import java.util.Scanner;
  7.  
  8. /**
  9.  *
  10.  * @author Ana Kéldysh
  11.  */
  12. //Clase Principal que contiene el método main
  13. public class Principal {
  14.    //Declaración del método main
  15.    public static void main(String[] args) {
  16.        List<Habilidad> poderes = new ArrayList<>();
  17.        List Miguel = new ArrayList();
  18.        List Agus = new ArrayList();
  19.  
  20.        poderes.add(new Habilidad("Arco", 0));
  21.        poderes.add(new Habilidad("Inteligencia", 0));
  22.        poderes.add(new Habilidad("Fuerza", 0));
  23.        poderes.add(new Habilidad("Pocima", 0));
  24.  
  25.        Miguel.add("Inteligencia");
  26.        Miguel.add("Paciencia");
  27.  
  28.        Agus.add("Pocima");
  29.        Agus.add("Inteligencia");
  30.        Agus.add("Invisibilidad");
  31.  
  32.        Principal.compararListas(poderes, Miguel);
  33.        Principal.compararListas(poderes, Agus);
  34.        Principal.mostrarLista(poderes);
  35.    }
  36.  
  37.    public static void compararListas(List poderes, List personaje) {
  38.        for (int i = 0; i < poderes.size(); i++) {
  39.            for (int j = 0; j < personaje.size(); j++) {
  40.                Habilidad a = (Habilidad) poderes.get(i);
  41.                if (a.getNombre().equals(personaje.get(j))) {
  42.                    a.setApariciones(a.getApariciones() + 1);
  43.                }
  44.            }
  45.        }
  46.    }
  47.  
  48.    public static void mostrarLista(List poderes) {
  49.        for (int i = 0; i < poderes.size(); i++) {
  50.            if (i < poderes.size() - 1) {
  51.                System.out.print(poderes.get(i) + ", ");
  52.            } else {
  53.                System.out.println(poderes.get(i));
  54.            }
  55.        }
  56.    }
  57.  
  58. }


Código
  1. package aplicacion.modelo.dominio;
  2.  
  3. /**
  4.  *
  5.  * @author Ana Kéldysh
  6.  */
  7. public class Habilidad {
  8.    private String nombre;
  9.    private int apariciones;
  10.  
  11.    public Habilidad(){
  12.    }
  13.  
  14.    public Habilidad(String nombre, int apariciones) {
  15.        this.nombre = nombre;
  16.        this.apariciones = apariciones;
  17.    }
  18.  
  19.    public String getNombre() {
  20.        return nombre;
  21.    }
  22.  
  23.    public void setNombre(String nombre) {
  24.        this.nombre = nombre;
  25.    }
  26.  
  27.    public int getApariciones() {
  28.        return apariciones;
  29.    }
  30.  
  31.    public void setApariciones(int apariciones) {
  32.        this.apariciones = apariciones;
  33.    }
  34.  
  35.    @Override
  36.    public String toString() {
  37.        return nombre + "-Apariciones: " + apariciones;
  38.    }
  39.  
  40.  
  41.  
  42. }
  43.  

En línea

7w7
WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.589


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: Ayuda con codigo Java
« Respuesta #4 en: 27 Abril 2019, 05:28 am »

Con respecto a:

Código:
    List lista = new ArrayList();
     
    lista.add(1);//<-¿Este valor se puede incrementar?
    lista.add(cualquierCosa);

Puedes hacer un:

Código:
lista.set(0, ++lista.get(0));

Donde set actualiza el valor siempre y cuando sepas cual es el índice de tu item, en mi caso puse 0 porque es el primer item, luego obtiene el item y le hace un ++ al lado derecho. Podría haber hecho un .get(0) + 1 pero era más elegante y usaba menos caracteres hacer un incremento de valor y retorno simultáneo. Cuando defines un valor++ autoincrementa el valor sobre si mismo, pero cuando haces un ++valor retorna el valor sumado.

Saludos.
En línea

rub'n


Desconectado Desconectado

Mensajes: 1.217


(e -> λ("live now")); tatuar -> λ("α");


Ver Perfil WWW
Re: Ayuda con codigo Java
« Respuesta #5 en: 27 Abril 2019, 16:05 pm »

A mi me surgió una duda acerca de su problema, soy novata en Java y queria saber si se puede modificar el valor de un objeto sin Generics en ArrayList por ejemplo esto

Código
  1. List lista = new ArrayList();
  2.  
  3. lista.add(1);//<-¿Este valor se puede incrementar?
  4. lista.add(cualquierCosa);

Si podrías incrementarlo como lo tienes en el código con

Código
  1. listaInteger.set(0, listaInteger.get(0) + 1);

O, tomando lo que dice WHK, pero no exactamente así, sino

Código
  1. Integer value = (Integer) listaInteger.get(0); //cast debido a falta de tipo parametrizado
  2. ++value;  //Operador de preincremtento, tambien con postIncremento value++;
  3. listaInteger.set(0, value);

Importante

en versiones anteriores a java 5, tu podías escribir tranquilamente ese tipo de lineas

Código
  1. List lista = new ArrayList();

y tener la esperanza de que los programadores que usen tu código, recuerden que tu quieres, únicamente Objetos Integer en ella.

Eso requiere un poco de análisis mental y tiempo, no se tendría una vía especifica para conocer el nombre esperado, es decir, si sera un Integer, Double, o hasta, String a StringBuilder.

desde Java 5, tu puedes documentar logrando una interpretación mas fácil a los demás, ese feature se llama generics, el compilador incluso ayuda a que cumplas esa suposición

quedando


Código
  1. List<Integer> lista = new ArrayList<Integer>();

Cuando la versión java 7 se libero, se logro una versión mas corta,

Código
  1. List<Integer> lista = new ArrayList<>();

la forma resumida, utiliza el operador diamante, se llama así porque <>, parece un diamante si inclinas tu cabeza a un lado.


Mira la diferencia, de esta linea

Código
  1. final HashMap<String, HashMap<String, String>> map1 = new HashMap<String, HashMap<String, String>>();

A esta linea

Código
  1. final HashMap<String, HashMap<String, String>> map2 = new HashMap<>();

Ambas declaraciones contienen maps anidados, la segunda linea es mas fácil de leer, porque no contiene información redundante.


El uso de tipos parametrizados

Código
  1. public static void mostrarNombres(List lista) {
  2.       for(int f=0; f<lista.size(); f++) {
  3.            final String nombre = (String) lista.get(f);//java.lang.ClassCastException
  4.            System.out.println(nombre);
  5.        }
  6.  
  7.    }
  8.  
  9.  public static void main(String ...blabla) {
  10.       List lista = new ArrayList();
  11.       lista.add(new StringBuilder("Ana Kéldysh"));
  12.  
  13.        mostrarNombres(lista);
  14.  }

Si recuerdas cuando hablamos de especificar el tipo de dato, aka tipo parametrizado en la lista, para saber de que tipo sera nuestra lista, que es lo correcto de hacer

En el ejemplo de arriba la linea 3 arroja java.lang.ClassCastException , porque en la linea 12, le añadimos un StringBuilder, esperando en realidad un String en la 3, dando la excepción, todo porque la lista no contiene nada, no especifica nada.

Los Generics fixean eso, permitiendo que escribas el tipo parametrizado, de que deseas una Lista de String, logrando que el compilador tenga información para prevenir que tu causes ese problema en primer lugar;


Código
  1. List<String> names = new ArrayList<String>();
  2. names.add(new StringBuilder("Ana Kéldysh")); // no compilara  

Tendríamos un error del compilador(tiempo de compilación) lo cual es bueno, porque te ayudara a detectar de inmediato el error, a diferencia de descubrir ese error luego.

« Última modificación: 27 Abril 2019, 21:38 pm por rub'n » En línea



rubn0x52.com KNOWLEDGE  SHOULD BE FREE.
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen ki
Beginner Web


Desconectado Desconectado

Mensajes: 634


youtu.be/0YhflLRE-DA


Ver Perfil
Re: Ayuda con codigo Java
« Respuesta #6 en: 27 Abril 2019, 21:17 pm »

Me sale un error con esto

Código
  1. List lista = new ArrayList();
  2. lista.add(1);
  3. lista.set(0, ++lista.get(0));


Código
  1. Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - incompatible types: java.lang.Object cannot be converted to java.lang.Integer
  2. at aplicacion.test.Principal.main(Principal.java:29)
 :huh:

Lo solucioné asi

Código
  1. Integer value = (Integer) lista.get(0);
« Última modificación: 27 Abril 2019, 21:52 pm por Beginner Web » En línea

7w7
srWhiteSkull


Desconectado Desconectado

Mensajes: 444



Ver Perfil WWW
Re: Ayuda con codigo Java
« Respuesta #7 en: 27 Abril 2019, 21:48 pm »

Indícale que vas a trabajar con enteros.

Código:
ArrayList<Integer>()
En línea

Beginner Web


Desconectado Desconectado

Mensajes: 634


youtu.be/0YhflLRE-DA


Ver Perfil
Re: Ayuda con codigo Java
« Respuesta #8 en: 27 Abril 2019, 21:52 pm »

Esta bien lo que dices pero yo quiero trabajar sin Generics  :laugh:
En línea

7w7
srWhiteSkull


Desconectado Desconectado

Mensajes: 444



Ver Perfil WWW
Re: Ayuda con codigo Java
« Respuesta #9 en: 27 Abril 2019, 21:55 pm »

Castea entonces
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda con codigo de java
Java
pakosamuel 5 3,700 Último mensaje 5 Junio 2010, 21:35 pm
por Leyer
Ayuda con código Java!
Java
compunova 2 2,609 Último mensaje 18 Octubre 2011, 23:43 pm
por klaine
Ayuda con código (aprendiendo java)
Java
Minina89 2 1,927 Último mensaje 14 Enero 2013, 01:09 am
por Minina89
Ayuda con un codigo de java?
Java
omar199609 2 2,035 Último mensaje 7 Junio 2015, 17:08 pm
por Usuario Invitado
Ayuda con código Java
Java
alvarodecadiz9 1 1,763 Último mensaje 10 Septiembre 2016, 12:48 pm
por alvarodecadiz9
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines