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 - César Krall

Páginas: 1 ... 25 26 27 28 29 [30] 31 32 33 34 35 ... 68
581
Hola!

Tienes un error de escritura (o varios) que hace que el compilador "se vuelva loco"

Código: [Seleccionar]
        ListaCantantesFamosos ListaCantantesFamosos = new ListaCantantesFamosos();
        ListaCantantesFamosos.addNombres (entradaTeclado);

El objeto no puede tener el mismo nombre que la clase. Tendrás que declarar el objeto con un nombre (puede ser simplemente la primera letra en minúsculas) distinto de la clase
Código: [Seleccionar]
        ListaCantantesFamosos listaCantantesFamosos = new ListaCantantesFamosos();
        listaCantantesFamosos.addNombres (entradaTeclado);


También tienes mal declarado el constructor en la clase ListaCantantesFamosos

No debe ser public void ListaCantantesFamosos (String nombres){ porque un constructor no lleva void, además ¿para qué sirve el parámetro nombres?

Será  public ListaCantantesFamosos (){

Este método también está mal definido: public void addNombres , no será addNombres si la finalidad del método es añadir un nombre será addNombre y el parámetro a recibir no será (String nombres) sino (String nombre) porque es uno solo.

También te falta mostrar la lista por pantalla cuando se introducen nombres

Saludos!

582
Hola r2montero!

A continuación la revisión

De acuerdo con el programa del curso todavía no se ha explicado ni se exige en los ejercicios el uso de condicionales. El uso de if else no es necesario para resolver este ejercicio. Por otro lado, los condicionales que has planteado no funcionan bien, ya que al establecer casado = true aparece el mensaje "El nuevo estado civil es Soltero
", lo cual no es cierto.

Los atributos recomendamos inicializarlos a cadena vacía "" para String, false para booleanos y 0 para valores numéricos.

Has declarado un método print pero está vacío, no se sabe cuál es su utilidad.

Este ejercicio puede mirarse como referencia

Saludos!

583
Hola Ana, las dudas que estás planteando puedes resolverlas siguiendo el curso http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=78&Itemid=206 donde se explican todos los conceptos de JavaScript

Saludos!

584
Hola Caludo, después de mirar tus códigos no le veo un diseño coherente a ninguno de los dos.

No veo por qué tienes necesidad de usar una clase interna PanelArriba

En este código he puesto simplemente el panel  principal y los dos paneles. En el panel de abajo se añaden los botones. Los botones registran los eventos de qué botón es pulsado y se encargan de cambiar el color de fondo del panel correspondiente.

Código: [Seleccionar]
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

public class PanelPrincipal extends JFrame{
    JPanel principal=new JPanel();
    JPanel panel2=new JPanel();
    JPanel arriba=new JPanel();
    JButton rojo=new JButton("Rojo");
    JButton azul=new JButton("Azul");

    public PanelPrincipal(){

        super("Panel principal");
        setSize(400,300);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        panel2.add(rojo);
        panel2.add(azul);
        principal.setBorder(BorderFactory.createLineBorder(Color.blue));
        panel2.setBorder(BorderFactory.createLineBorder(Color.green));

        arriba.setBorder(BorderFactory.createLineBorder(Color.pink));

        BoxLayout horizontal=new BoxLayout(principal,BoxLayout.Y_AXIS);
        principal.setLayout(horizontal);
        principal.add(arriba);
        principal.add(panel2);

        add(principal);
        setVisible(true);

        rojo.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    arriba.setBackground(Color.red);
                }
            } );

        azul.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    arriba.setBackground(Color.blue);
                }
            } );
    }

    public static void main(String[]args){
        PanelPrincipal p=new PanelPrincipal();
    }
}

Saludos!

585
Hola! El programa funciona bien

¿Para qué has declarado el atributo private String cantantesFamosos dentro de la clase ListaCantantesFamosos? Si es para ponerle un nombre a cada lista, deberías llamarlo nombreLista o nombreDeLaLista o nombreListaCantantes pero no cantantesFamosos porque el nombre no explica la utilidad que tiene.

Tienes que mejorar la forma de nombrar los métodos. Un método como addNombres se supone que es para añadir nombres (varios nombres) pero realmente el método solo sirve para añadir un nombre a la lista, por ello el método sería mejor llamarlo addNombre

Lo mismo ocurre con getNombres

Saludos!

586
Hola Ana

Para poder ayudarte pega el código con el que estés trabajando como se explica en https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0 debes pegar el código entre etiquetas code

En el curso de JavaScript en la entrega CU01185 y otras hay ejemplos de código para validar emails

Saludos!

587
Hola!

La duración de la canción en el ejercicio se dice que es expresada como un número decimal en minutos

public int getDuracion(int trackNumber) devuelve un número entero, no podríamos recuperar el decimal, luego no está bien


El ejercicio dice que las duraciones de las canciones se almacenarán como información del objeto, por tanto para obtener la duración total no hace falta pasar parámetros porque esa información ya existe

public float getDuracionTotal(float trackTime, int totalTracks) {

no está bien. Si la información ya está en el objeto, ¿para qué pasarle parámetros?



public void setDuracion (int trackNumber, int trackTime) { no está bien. Con esta definición se le está pasando al método un número de canción y una duración de canción. ¿Y las demás canciones? El ejercicio dice que el método se encargará de pedir la duración de todas las canciones. Y esas duraciones se encuentran almacenadas en el objeto. Quizás estén establecidas a cero y por eso se quieran establecer con valores correctos. O quizás tengan errores y por eso se quieran restablecer.

 public void anadirCancion (float trackTime, int totalTracks, int trackNumber, String trackTitle) { sería posible (es decir, se puede definir que el método tenga varios parámetros de distintos tipos) pero en este caso no es correcto. El ejercicio indica que el método únicamente debe recibir como información el título de la canción y su duración (2 parámetros). Sin embargo aquí recibe 4 parámetros. ¿Para qué 4 parámetros si solo son necesarios dos parámetros?

Ver esta solución: www.aprenderaprogramar.com/foros/index.php?topic=956

Saludos!

588
Hola!

Cosas a mejorar:

- La forma de nombrar las clases. Lee lo que se explica en https://www.aprenderaprogramar.com/foros/index.php?topic=3035.msg13698#msg13698

Sería un mejor nombre de clase ComparadorDePalabras o algo así en lugar de Compara


- No debe usarse un bucle while donde la condición sea while (true) porque esto es un mal diseño. Lee lo que se explica en https://www.aprenderaprogramar.com/foros/index.php?topic=3074

Al haber usado while (true) te obliga a usar un break. Debes eliminar tanto el while (true) como el break. break es una forma no adecuada para salir de un bucle, lee lo que se explica en https://www.aprenderaprogramar.com/foros/index.php?topic=3060

- También recomiendo dar nombres descriptivos a las variables (excepto contadores en bucles for o similar), por ejemplo

int m = 0;//Variable con el numero de caracteres de la cadenas mas corta

int numCharCadenaCorta = 0;//Variable con el numero de caracteres de la cadenas mas corta

Si los nombres son descriptivos el código resulta más fácil de estudiar y mantener y en general se considera mejor programación.

Con todo lo indicado deberías intentar reescribir el ejercicio.

Saludos!

589
Hola!

Bienvenido a los foros. Lee por favor este hilo https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0 donde se indica cómo pegar código en los foros y otras cuestiones de interés.

Parece que el código que has puesto está incompleto o tiene comentarios y no se puede compilar y no acabo de entender si los datos los tratas de cargar desde un archivo o desde una base de datos MySql

En este código puede verse un ejemplo de carga de datos desde una base de datos (antes hay que iniciar la conexión con la base de datos)

Código: [Seleccionar]
public class TestComboBox {
 
    private JComboBox combo;
    private Connection sqlCon;
    private Statement st;
 
    public TestComboBox() {
        initComponents();
 
    }
 
    private void initComponents() {
 
        combo = new JComboBox();
 
 
        try {
             
            st = sqlCon.createStatement();
 
        } catch (SQLException sqle) {
            System.out.println(sqle);
        }
 
    }
 
    public JComboBox getComboBox() {
 
        combo.removeAllItems();
        combo.addItem("Por favor elegir...");
 
        try {
             
            ResultSet rs = st.executeQuery("select nombre, apellidos from myTable");
 
            while (rs.next()) {
                combo.addItem(rs.getString("nombre") + " " + rs.getString("apellidos"));
            }
 
 
 
        } catch (SQLException sqle) {
            System.out.println(sqle);
        }
 
 
        return combo;
    }
}

También se puede hacer sobreescribiendo la clase JComboBox

Código: [Seleccionar]
public class TestComboBox extends JComboBox {
 
    private Connection sqlCon;
    private Statement st;
     
    public TestComboBox() {
        super();
         
        initComponents();
 
    }
 
    private void initComponents() {
 
        try {
 
             
            st = sqlCon.createStatement();
 
            loadCombobox();
 
 
        } catch (SQLException sqle) {
            System.out.println(sqle);
        }
 
    }
 
 
 
    public void loadCombobox(){
 
        this.removeAllItems();
        this.addItem("Por favor elegir...");
 
        try {
 
            ResultSet rs = st.executeQuery("select nombre, apellidos from myTable");
 
            while (rs.next()) {
                this.addItem(rs.getString("nombre") + " " + rs.getString("apellidos"));
            }
 
 
 
        } catch (SQLException sqle) {
            System.out.println(sqle);
        }
 
    }
 
 
}

Saludos!

591
De acuerdo! Ya he editado el título.

En tus respuestas hay varias cosas a corregir.

La duración de la canción en el ejercicio se dice que es expresada como un número decimal en minutos

Tú has indicado public String getDuracion

Pero si es un valor numérico no debe ser un String (un texto), sino un tipo de dato numérico.

Has planteado mal el definir que todos los métodos devuelvan un String, tienes que fijarte en qué ha de hacer y qué ha de devolver cada método para plantear su signatura.

Es conveniente que repitas el ejercicio. Puedes tratar de orientarte usando este tema del foro https://www.aprenderaprogramar.com/foros/index.php?topic=956 para después plantear tu propia respuesta.

Saludos!

592
Hola Javier!

La pregunta que haces: tú como programador puedes decidir tener los métodos que consideres adecuados siempre que sean coherentes. Por ejemplo un método no debe servir para establecer y recuperar un atributo al mismo tiempo porque sería mezclar dos cosas. Un método debe tener una responsabilidad clara y definida, tener un nombre explicativo y claro, etc.

Por otro lado, tener set y get individuales para cada atributo es una práctica habitual que deberías seguir al menos por el momento. Digamos que es un "convenio entre programadores". No es obligatorio, pero es lo más habitual, por lo que durante el aprendizaje es mejor seguir el convenio.

¿Qué ocurriría si quieres establecer la edad para un objeto de tipo Persona? El código de tu ejercicio está bien pero tal y como tienes el código no dispondrías de un método que te permita establecer la edad, por tanto para dar el ejercicio por bueno sería necesario que tuvieras un método set por cada atributo (aunque no sea obligatorio por las normas del lenguaje, sería la forma de cumplir el convenio entre programadores)

Saludos!

593
Hola felix!

En el ejemplo que has puesto:

1) La clave DNI-Fecha de Nacimiento es una clave compuesta y para que hubiera un conflicto o coincidencia de clave entre dos registros tendrían que ser exactamente iguales. Por tanto no ocurriría nada porque dos fechas de nacimiento fueran iguales siempre que se cumpliera siempre que los DNI fueran distintos.

2) Usar como clave primaria DNI-Fecha de Nacimiento no es una buena idea. El motivo es que las fechas de nacimiento pueden coincidir fácilmente, con lo cual son poco útiles de cara a servir como identificador. Y por otro lado, el DNI es un número identificativo que se supone que no puede coincidir. Sin embargo, en ocasiones hay errores por parte de la administración, o también errores en las empresas a la hora de introducir el dni de sus empleados, etc. de modo que por error podrían aparecer dos personas que tienen el mismo dni y la misma fecha de nacimiento. La probabilidad es baja, pero podría ocurrir. Esto no es aceptable.

La solución sería usar una clave primaria que fuera un contador autoincremental generado por la propia base de datos, lo que se suele llamar un Id, en este caso sería un IdPersona. Este número es generado por al propia base de datos cada vez que se añade un registro y siempre se incrementa en una unidad, de modo que es imposible que haya repeticiones.

En el ejemplo

id_persona   DNI             Fecha de Nacimiento
1                 14785          12-04-06
2                 84212          12-04-06


etc.

Saludos!

594
Hola r2montero cuando pegues el código de un ejercicio de un curso indica siempre el código del ejercicio, por ejemplo CU00688B o el que sea, de esa forma es como podemos saber a qué te refieres, ya que hay cientos de ejercicios en la web

Saludos!

595
Hola Javier la clase CocinaCasa está perfecta; la clase SalonCasa también. La clase Casa también la tienes bien aunque en esta clase habría distintas alternativas para plantearla. Como podrás leer en otros hilos recomendamos revisar https://www.aprenderaprogramar.com/foros/index.php?topic=1220.0 y https://www.aprenderaprogramar.com/foros/index.php?topic=1238 para ampliar.

Saludos!

596
aprenderaprogramar.com se aproxima a los 500 seguidores en FaceBook. Para celebrarlo os proponemos un pequeño concurso en el que os animamos a todos a participar. Las bases son las siguientes:




 - Puede presentarse cualquier persona que no haya publicado dibujos o artículos en la web de aprenderaprogramar.com.

- El concurso consistirá en la creación de un texto, historia, dibujo, comic, pintura... libre cuyo tema central sea "La programación". Puede ser una creación de cualquier tipo: texto humorístico, historia personal, un relato, una anécdota, un diálogo teatral, un ensayo, un cómic, historieta gráfica, etc.

- La creación debe ser completamente original, estar creada ex-profeso para este concurso y no haber sido publicada por ningún medio anteriormente.

- Se admiten un máximo de dos creaciones por persona.

- Si es un texto estará redactado sobre página con márgenes de 2 cm en todos los sentidos, y tipo de letra Arial, tamaño de letra 11 puntos e interlineado 1.5 líneas.

- La extensión máxima será de 5 páginas. No se define una extensión mínima.

- Si es un texto no se admiten fotografías o imágenes acompañando al texto, excepto si son dibujos a mano creados ex-profeso para el concurso.

- Entre las creaciones recibidas, el equipo de redacción de aprenderaprogramar.com seleccionará el ganador basándose en: originalidad, interés, calidad narrativa o gráfica.

- Si más de una creación se considera de igual calidad se podrá conceder más de un premio.

- Se podrán enviar creaciones-textos entre el 20 de agosto y el 30 de septiembre de 2015. El resultado del concurso será publicado en la web aprenderaprogramar.com y en Facebook entre el 1 y el 15 de octubre de 2015.

- Para participar deberá enviarse el texto o creación en formato word, pdf, o incluso escaneado, al correo electrónico contacto@aprenderaprogramar.com indicando "Concurso sobre la programación", nombre y apellidos, ciudad, país y correo electrónico del participante. Para dibujos, comics, etc. el formato podrá ser jpg, png ó similar. Enviaremos una confirmación de recepción al remitente.

- El ganador o ganadora tendrá como premio:

* Un libro electrónico de entre los publicados por aprenderaprogramar.com (podrá escoger el que desee).

* Publicación del texto o creación en la web de aprenderaprogramar.com, figurando que ha sido el texto o creación ganadora del concurso y la persona ganadora (o su pseudónimo si lo prefiere) como autor.

¡Esperamos vuestra participación!

597
Hola Hugo Javier, tu código no está bien construido por diversos motivos: le faltan los getter y setter, atributos, constructor, etc.

Mi recomendación es que comiences el curso http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=68&Itemid=188 desde cero y vayas presentando en el foro cada uno de los ejercicios realizados, de forma que con la ayuda desde los foros podrás ir comprobando que avanzas correctamente. Ir paso a paso será la mejor forma de aprender.

De cualquier manera, si quieres ver una solución a este ejercicio puedes guiarte por el presentado en este hilo: https://www.aprenderaprogramar.com/foros/index.php?topic=1300

Saludos!

598
GonzaH: si ves el curso en http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=70&Itemid=193 verás que te has adelantado porque todavía no se ha explicado el GET  ;D

Elanti: pega el código que hayas creado para poder verlo. Aunque tú consideres que está bien si lo ven personas con más experiencia te podrán hacer críticas o proponer ideas para mejorarlo

Saludos!

599
Hola Javier en primer lugar darte la bienvenida a los foros. En cuanto al ejercicio está todo bien y además lo has comentado con bastante detalle. ¡A seguir así!

Saludos

Páginas: 1 ... 25 26 27 28 29 [30] 31 32 33 34 35 ... 68

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".