Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - nengue

Páginas: [1]
1
Buenas, aquí seguimos, desde ya muhas gracias a los que anteriormente se tomaron el tiempo de verificar mis soluciones presentadas.

Continuando con el curso y la llamada de un método de una superclase desde una subclase ... aquí dejo el código. Como siempre, "no me dejen pasar una" para seguir mejorando.

Algunos comentarios como

//declaracion de atributos
//constructores
//metodos

los sigo realizando aun para acostumbrarme a mantener un orden y en breve los estaria dejando de usar .aunque su uso en codigos mas complejos ayuda a la comprension del mismo

Código de la clase Profesor:

Código: [Seleccionar]
package CU00692B;

/**
 * Clase Profesor , una superclase que tiene como atributos los siguientes campos
 * Nombre, edad y numero de años consolidados
 */
public class Profesor{
    //declaracion de atributos
    private String nombre;
    private int edad;
    private int añosConsolidados;

    //Constructos
    /**
     * Constructor de la clase Profesor sin parametrizar
     * todas sus variables se iniciaran por defecto en 0 y ""
     */
    public Profesor(){
        nombre="";
        edad=0;
        añosConsolidados=0;
    }

    /**
     * Constructor de la clase Profesor parametrizada
     * @param nombre Nombre del profesor
     * @param edad Edad del profesor
     * @param añosConsolidados Los años consolidados del profesor
     */
    public Profesor(String nombre,int edad, int añosConsolidados){
        this.nombre=nombre;
        this.edad=edad;
        this.añosConsolidados=añosConsolidados;
    }
    //metodos de la clase Profesor
    /**
     * setNombre Permite establecer o modificar el nombre del profesor
     */
    public void setNombre(String nombre){
        this.nombre=nombre;
    }

    /**
     * setEdad Permite establecer o modificar la edad del profesor
     */
    public void setEdad(int edad){
        this.edad=edad;
    }

    /**
     * setAñosConsolidados permite establecer o modificar los años consolidados
     */
    public void setAñosConsolidados(int añosConsolidados){
        this.añosConsolidados=añosConsolidados;
    }

    /**
     * getNombre Devuelve el nombre del profesor
     */
    public String getNombre(){
        return nombre;
    }

    /**
     * getEdad Devuelve la edad del profesor
     */
    public int getEdad(){
        return edad;
    }

    /**
     * getAñosConsolidados devuelve los años consolidados del profesor
     */
    public int getAñosConsolidados(){
        return añosConsolidados;
    }

    /**
     * obtenerSalarioBase Devuelve el valor del salario base  del profesor
     */
    public double obtenerSalarioBase(){
        double salarioBase=(725 + (añosConsolidados*33.25));
        return salarioBase;
    }
}


Código de la clase profesorEmerito

Código: [Seleccionar]
package CU00692B;

/**
 * Clase ProfesorEmerito,sub-tipo(sub-clase) de clase Profesor
 * hereda todos sus atributos y añade un atributo especifico
 */
public class ProfesorEmerito extends Profesor{
    //declaracion de atributos
    private int añosEmerito;
    //constructor
    /**
     * Constructor sin parametrizar , inicializa todos los valores por defecto en 0 y ""
     */
    public ProfesorEmerito(){
        super();
        añosEmerito=0;
    }

    /**
     * Constructor parametrizado de la clase ProfesorEmerito
     * @param nombre Nombre del Profesor
     * @param eda Edad del profesor
     * @param añosConsolidados Años consolidados del profesor
     * @param añosEmerito Años emeritos del profesor
     */
    public ProfesorEmerito(String nombre,int edad,int añosConsolidados,int añosEmerito){
        super(nombre,edad,añosConsolidados);
        this.añosEmerito=añosEmerito;
    }
    //metodos
    /**
     * setAñosEmerito Permite establecer o modificar los años Emeritos del profesor
     */
    public void setAñosEmerito(int añosEmerito){
        this.añosEmerito=añosEmerito;
    }

    /**
     * getAñosEmerito devuelve el valor de añosEmerito
     */
    public int getAñosEmerito(){
        return añosEmerito;
    }

    /**
     * obtenerSalarioBase Devuelve el salario base mas un plus por años emerito
     */
    public double obtenerSalarioBase(){
        double salarioBase=(super.obtenerSalarioBase() + (47.80*añosEmerito));
        return salarioBase;
    }

}


Como consulta añadida me gustaria que me indicaran si esta forma sería correcta tambien

Código: [Seleccionar]
  public double obtenerSalarioBase(){
        return (super.obtenerSalarioBase() + (47.80*añosEmerito));
}

Evitaría la declaracion de una variable local, pero entiendo que no en todos los casos
seria posible evitar la declaracion de la misma, ya sea por necesidad o por legilibilidad.
       

2
Citar
- Set se traduce como conjunto y es una interface Java, mientras que List es otra interface Java distinta. Por eso no es lo más adecuado usar nombres para sets de tipo lista1 porque puede confundir. Por ejemplo en lugar de HashSet<String> lista1; sería mejor HashSet<String> conjunto1; ó HashSet<String> miSet1; para no confundir sets con lists.
Exelente aporte Alex,no me di cuenta que podria dar lugar a confusion y es bien cierto, a tener en cuenta de ahora en adelante

El resto de comentarios los voy a revisar y tambien la recomendación que dejaste. Muchas gracias por tu tomarte tu tiempo en verificar y corregir mi ejercicio.

3
Sé cómo ingresar 2 números, el problema es cuando el segundo número es mayor, ya que no sé cómo continuar cuando sucede eso...

te recomiendo lo que indica ogramar, de todos modos, y suponiendo que entendi que no sabes que hacer "mas adelante", ¿cuando un numero A es multiplo de B?siendo  que A>B, la respuesta es que A es multiplo de B si existe un numero distinto de 0 tal que A=B*C....
si recordas la definicion de division(o algo asi) podemos reescribir diciendo lo siguiente
que A=B*C+r (r es el resto ,resto de la division)....entonces un numero A es multiplo de B si y solo si r=0    .... ayudandote a pensar un poco mira lo siguiente
supongamos los siguientes numeros
A    B
10  2  ¿Existe un  C tal que 10=2*C y ademas r=0?si C=5  =>A multiplo de B
21  5  ¿Existe un  C tal que 21=5*C y ademas r=0?no C=4 r=1  =>A no es multiplo de B
18  1  ¿Existe un  C tal que 18=1*C y ademas r=0?si C=18  =>A es multiplo de B
59 11 ¿Existe un  C tal que 55=11*C y ademas r=0?no,C=5 r=3 =>A no es multiplo de B

en java entonces hay un operador que lo que hace es justamente verificar si r=0(el modulo)..esperamos que subas tu codigo como indico ogramar

4
se me planteo este problema el cual no eh podido encontrar una solución:
pedir dos números al usuario verificar si el más grande de ambos es múltiplo del otro
y que es lo que no has podido solucionar?ingresar dos numeros?resolver cual es el mayor?determinar si es multiplo?


5
Buenas de nuevo,pongo aquí el código del ejercicio CU00678B del manual de programación java desde cero. Tengo que decir que me ha costado entender el concepto de Interface, y más que nada su función porque en un principio, parece que no aporta nada, y será un concepto que tendré que revisar nuevamente. Sin más dilaciones,dejo mi propuesta de resolución al ejercicio citado .


Código: [Seleccionar]
import java.util.ArrayList;
import java.util.Set;
import java.util.HashSet;
import java.util.TreeSet;
import java.util.Iterator;

/**
 * CU00678B
 *  La interface Set de Java es implementada por las clases HashSet y TreeSet.
 *  Busca información sobre estas clases en la documentación del api Java.
 *  Crea un programa Java que haga lo siguiente:
 *  a) Declarar un ArrayList de objetos de tipo Set.
 *  b) Crear un objeto de tipo HashSet para contener Strings y haz que contenga las cadenas “sol”, “luna”, “saturno”.
 *  c) Crear un objeto TreeSet para contener Integers y haz que contenga los números 2, 8, 5.
 *  d) Añade los objetos HashSet y TreeSet como elementos del ArrayList.
 *  e) Usa iteradores para recorrer los elementos del ArrayList y recorrer el contenido de cada uno de los
 *  elementos y mostrar este contenido por pantalla. Por pantalla deberás obtener “sol”, “luna”, “saturno”, 8, 5, 2.
 */

public class CU00678B{
    public static void main (String[] args){

        ArrayList<Set> miLista;     //Una lista que contiene objetos de tipo Set(HashSet,TreeSet,EnumSet,etc)
        HashSet<String> lista1;     //Coleccion de elementos no duplicados respaldados por una tabla de hash
        TreeSet<Integer> lista2;    //una coleccion de elementos no duplicados basada en TreeMap

        lista1 = new HashSet<String>();//añadiendo objetos tipo String (cadena de texto) al HashSet;
        lista1.add("sol");
        lista1.add("Luna");
        lista1.add("Saturno");

        lista2 = new TreeSet<Integer>();//Añadiendo objetos tipo Integer(int no es objeto) al Set
        lista2.add(2);
        lista2.add(8);
        lista2.add(5);

        miLista = new ArrayList<Set>();//añadiendo HashSet y Set a mi ArrayList(lo puedo hacer por indicar un tipo y no una clase)
        miLista.add(lista1);
        miLista.add(lista2);

        Iterator<Set> listaIterada = miLista.iterator();    //creando iterador para miLista ArrayList<set>
        Iterator<String> lista1Iterada = lista1.iterator(); //creando iterador para lista1 HashSet<String>
        Iterator<Integer> lista2Iterada = lista2.iterator();//creando iterador para lista2 TreeSet<Integer>
     
        //recorro con un iterador mi HashSet y mi Set ,contenidos en un Arraylist ,recorrido a su vez a traves de un iterador
        while(listaIterada.hasNext()){
            while(lista1Iterada.hasNext()){
                System.out.print(lista1Iterada.next() + "," );
            }
            while(lista2Iterada.hasNext()){
                System.out.print(lista2Iterada.next());
                if (lista2Iterada.hasNext())
                {
                    System.out.print(",");
                   
                }
            }
            listaIterada.next();
        }

    }
}

6
Alex, muchas gracias por responder..y por tomarte el tiempo de revisar el codigo

Citar

- En la clase CantanteFamoso hay un comentario que es << * esta clase contiene a los objetos Cantantefamoso >>
Sería más correcto decir << * esta clase define a los objetos Cantantefamoso >> o bien << * esta clase representa a los objetos Cantantefamoso >> ya que la clase no contiene objetos, los define.

- Lo mismo ocurre en la clase ListaCantantesFamosos


Excelente, es bien cierto, la clase solo define, no contiene

Citar
En la clase CantanteFamoso los métodos set no se ajustan a la convención que siguen los miles de programadores Java. Un método set se usa para establecer un atributo a partir de un parámetro o varios parámetros recibidos. Pero aquí los métodos set no reciben parámetros, sino que piden al usuario que introduzca datos por teclado. Esto no está bien planteado desde el punto de vista de la programación orientada a objetos, porque no es responsabilidad de un método set interactuar con el usuario.


...Bien aunque funcione, eso esta mal..gracias por la corrección,Setters siempre con argumentos entonces

Citar
En la clase ListaCantantesFamosos se añaden dos cantantes en el constructor. Esto no debe hacerse, excepto si el ejercicio lo pide explícitamente. En este ejercicio no se pide, luego no es correcto. Esto implicaría que todas las listas se inicializarían con las mismas dos canciones iniciales.


bueno en el ejemplo de como debia mostrarse , iniciaba con dos cantantes precargados,la l"ista inicial", por eso en el constructor se añaden dos canntantes.de todas maneras , excelente tu respuesta y valoro muchisimo los comentarios!me han sido de muchisima utilidad,gracias por tu tiempo y tu respuesta!


7
El error es el siguiente , cuando preguntas cantFilas estas preguntando la cantidad de elementos (palabras) ,que vas a guardar en tu arreglo(dimension) ,y no es lo mismo cantidad de elementos al indice; el indice en un arreglo, es igual a n-1 donde n es la cantidad de elementos, entonces si queres obtener el elemento en la pocision 1, el indice debe ser 0....para explicar mejor..el arreglo es como una caja , que guarda elementos del mismo tipo, imaginemos frutas y lo vamos a representar de esta manera

[naranja, manzana, banana]

ahora bien, en nuestra caja tenemos 3 elementos, en la pocisión 1 una naranja, en la pocisión 2 una manzana y en la pocisión 3 una banana, pero en el arreglo si queremos obtener o sacar un elemento debemos usar el índice , fijate lo siguiente


     1             2           3             pocisión
[naranja, manzana, banana] -> cantidad de elementos =3
    0             1             2            índice

se cumple entonces que el índice es igual a n-1

si yo digo cajonDeFrutas[0] ,esto es igual a naranja ...el error viene porque estas apuntando a un indice que no existe ...espero que hayas entendido..la solución para el error seria cantFilas-1 en el ciclo para, ya que estas diciendo  en tu ciclo para que el índice debe ir de 1 hasta 3, y en tu ejercicio no solamente arrancamos mal con i=1(partimos desde manzana, y olvidamos la naranja) si no que apuntamos a un índice que no existe (el índice va desde 0 hasta 2)...espero haberte ayudado a que comprendas el error.

Por otro lado....¿como guardas las palabras que ingresas en el ciclo para en tu arreglo?
no veo una asignación..ojo con eso..espero que te des cuenta que lees las palabras pero no las estas guardando en el arreglo(dimension)palabrasIngresadas...para que esto suceda deberías escribir algo como

Código: [Seleccionar]
leer palabra
palabrasIngresadas[i]<-palabra

espero que se entienda..otra observación es que necesitas de una dimensión aux para mostrar la dimensión reordenada o un medio alternativo, como una variable auxiliar y una forma de controlar el reordenamiento,
azar te va a dar error,deberias indicar que el numero al azar este dentro de los valores del indice(tamaño del arreglo o dimension - 1 ), y que si un índice ya salió genere nuevamente otro valor...anda corrigiendo y vamos viendo, lo importante es que lo puedas ver y te des cuenta.

8
Buenas, me gustaria que me den su opinión sobre esta propuesta de solución para el ejercicio CU00667B del tutorial de programación Java. Me encuentro en formación y si bien el ejercicio creo que lo he resuelto bien me gustaria que me den su opinion pero en primer medida si detectan errores ya sea de sintaxis o de otro tipo ,que me los indiquen para corregir y mejorar, en orden comenzando con la clase main, y luego el código de las siguientes dos clases.Desde ya muschas gracias!


Código: [Seleccionar]
import java.util.Scanner;
/**
 * clase main de prueba
 */

public class test_ListaCantantesFamosos
{
    public static void main(String[] args)
    {
        ListaCantantesFamosos lista=new ListaCantantesFamosos();
        String opcion = "s";
        Scanner entrada = new Scanner(System.in);
       
        System.out.println("Esta es la lista Inicial");
        lista.mostrarListaCantantes();
       
         while(opcion.charAt(0)!='n')
        {
         lista.addCantanteFamoso();
         System.out.println("\rLa lista actualizada es" );
         lista.mostrarListaCantantes();
         System.out.println("Desea continuar? s/n ");
         opcion = entrada.nextLine();
        }
       
    }
   
}
       


Clase ListaCantantesFamosos

Código: [Seleccionar]
import java.util.ArrayList;
import java.util.Iterator;
/**
 * Esta clase contiene una lista con todos los cantantes famosos
 * cada cantante famoso es una instancia de CantanteFamoso
 */

public class ListaCantantesFamosos
{
    private ArrayList<CantanteFamoso> lista ;

    public ListaCantantesFamosos()
    {
        lista = new ArrayList<CantanteFamoso>();
        lista.add(new CantanteFamoso("Madonna","All i wants is you"));
        lista.add(new CantanteFamoso("Jorge Negrete","Jalisco"));
    }

    public void addCantanteFamoso()
    {
        lista.add(new CantanteFamoso());
    }

    public void mostrarListaCantantes()
    {
        Iterator<CantanteFamoso> dato= lista.iterator();
        while (dato.hasNext())
        {
            CantanteFamoso extraido = dato.next();
            System.out.println("*Artista: " + extraido.getNombreCantante() + " \tDisco mas vendido : " + extraido.getDiscoMasVendido()) ;
        }
    }

}


Clase CantanteFamoso

Código: [Seleccionar]
import java.util.Scanner;
/**
 * esta clase contiene a los objetos Cantantefamoso
 * compuesto por un nombre de cantante y el nombre
 * del disco mas vendido
 */

public class CantanteFamoso{

    private String nombreCantante;
    private String discoMasVendido;

    public CantanteFamoso()
    {
        setNombreCantante();
        setDiscoMasVendido();
    }
   
    public CantanteFamoso(String nombre,String disco)
    {
        nombreCantante=nombre;
        discoMasVendido = disco;
    }

    public void setNombreCantante()
    {
        Scanner entrada = new Scanner(System.in);
        System.out.println("Ingrese el nombre del cantante");
        nombreCantante = entrada.nextLine();
    }

    public void setDiscoMasVendido()
    {
        Scanner entrada = new Scanner (System.in);
        System.out.println("Ingrese el nombre del Disco mas vendido de " + nombreCantante);
        discoMasVendido = entrada.nextLine();
    }

    public String getNombreCantante()
    {
        return nombreCantante;
    }

    public String getDiscoMasVendido()
    {
        return discoMasVendido;
    }
}

9
Comunidad / Presentación
« en: 21 de Noviembre 2020, 05:48 »
Buenas a todos, aqui otro novel , con unos cuantos otoños encima, actualmente cursando una tecnicatura en desarrollo de software,aprobado con gran exito el primer año, y como tengo familia y un trabajo(no asociado a la programacion) debo aprovechar el tiempo libre para adelantar y es asi que aqui estoy, presentandome ante ustedes, actualmente recorriendo el curso java desde el principio, espero seguir con este impulso y poder ser tan bueno como algunos de los aqui presentes.Un saludo desde argentina y gracias por compartir el conocimiento.

Páginas: [1]

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".