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 - Mario R. Rancel

Páginas: 1 ... 10 11 12 13 14 [15] 16 17 18 19 20 ... 32
281
Buenos días Pedro, tras revisar tu ejercicio puedo decir que creo que se adapta perfectamente a lo que se pretendía:

Citar
Intenta resolver el ejercicio con los conocimientos adquiridos a lo largo del curso y realizando alguna consulta adicional en internet. Es bueno intentar enfrentarse a los problemas por uno mismo y tratar de resolverlos por uno mismo, ya que favorece el aprendizaje como programadores. Ten en cuenta que este ejercicio posiblemente no tenga una solución única, sino que hay distintas formas de plantearlo y distintas formas de resolverlo. Intenta crear tu propia solución y después compárala con la que indicaremos nosotros tratando de ver las ventajas e inconvenientes de una y otra forma de resolver el problema.

En tu caso para el envío de datos has definido un formulario que envuelve a la tabla, y cuando se realiza la edición añades el código del campo del formulario a enviar.

En la propuesta incluida dentro del curso se dejaba un div vacío con id <div id="contenedorForm"> al que se añadía el contenido del formulario una vez se realizaba la edición.

Hay otras diferencias pero en general tu solución es buena y simple y en algunos aspectos creo que incluso mejora a la propuesta dentro del curso.

Hay un detalle que a primera vista me parece mejor en la solución del curso que en la tuya, que es qué se pasa como argumentos a la función cuando se pulsa el botón editar. En tu caso tenemos por ejemplo onclick="editarFila(2)" y en la solución del curso onclick="transformarEnEditable(this)"

¿Por qué comento esto? Al indicar editarFila(2) estás ligando el número 2 a esta edición, pero supón que otra persona hace un cambio en el orden de los alimentos y pone la cereza antes que el plátano. En ese caso cuando pulsemos en editar en la fila de la cereza nos editaría la fila del plátano, porque la llamada no está ligada a la fila sino a un número fijo. Cuanto menos referencias "fijas" y más "genéricas" tengamos más robusto será el código frente a cambios.

Este ejercicio puedes darlo por más que bueno.

Saludos

282
Hola Pedro ambos ejercicios están resueltos a la perfección.

Para otras personas que lo revisen voy a comentar dos cosas interesantes:

for(var i=1; i<=palabra.length; i++){ empieza a contar en 1. Fijarse en el <= que permite contar todos los elementos.

for(var i=0; i<parrafosObtenidos.length; i++){ empieza a contar en 0. Fijarse en el < que permite que el conteo sea correcto.

Ambas formas son válidas, no obstante tener en cuenta que cuando vayamos a acceder a índices de arrays el primer índice es cero. Esto suele ser motivo de error cuando no se tiene práctica.

Otra cosa a comentar es que en el segundo ejercicio los párrafos no tienen aspecto de párrafos debido a que tienen aplicada una regla CSS que modifica su aspecto:

Código: [Seleccionar]
p {font-size: 24px; color: maroon; float: left; margin:10px; border: solid black; padding:10px;}
Saludos

283
Saludos Pedro tus contestaciones las encuentro todas bien y el código también. El problema del apartado 4. como comentas se debe a que un id debe ser único, al repetirse dos veces el id se genera un conflicto.

285
Hola todavía no cumples lo que indica el enunciado del ejercicio:

Citar
A continuación declara una variable mesSecreto de tipo String, y hazla igual a un elemento del array (por ejemplo mesSecreto = mes[9]

Recordar también que los nombres de las clases deben empezar con una letra mayúscula

En este hilo está el ejercicio resuelto, revísalo a partir de esa solución y si tienes dudas consulta, https://www.aprenderaprogramar.com/foros/index.php?topic=2108

Saludos

286
Hola MarckyMarck

El ejercicio lo veo perfecto!

Recomendar que una vez tengas el código escrito pulses en el editor de BlueJ en el menú edit la opción Auto-Layout que realiza un formateado dejando las sangrías adecuadas para una mejor ordenación y visualización del código

Saludos

287

Hola

Un pequeño detalle:  he echo se escribe "he hecho", ambas con hache!

Revisando el ejercicio:

- El nombre de una clase en Java preferiblemente no debe contener la letra eñe, en https://www.aprenderaprogramar.com/foros/index.php?topic=3035.0 hay una explicación sobre cómo nombrar clases en Java.

- No cumple la consigna,

Citar
declarar una variable de tipo array de Strings que contenga los doce meses del año, en minúsculas y declarados en una sola línea

has declarado la variable pero no la has inicializado como pedían. Puedes verlo resuelto en este hilo: declares una variable de tipo array de Strings que contenga los doce meses del año, en minúsculas y declarados en una sola línea

- Tienes un fragmento de código poco comprensible

Código: [Seleccionar]
if (entradaTeclado.equalsIgnoreCase("Julio")){}
            else{}

Que significa que si la entrada de teclado es igual a julio no se hace nada y si no es igual tampoco se hace nada ¿Y qué es lo que se hace si en ningún caso se hace nada?

Saludos

288
Hola niurkafer

Cuando quieras escribir texto que te aparezca un texto al lado del otro en lugar de debajo del otro usa System.out.print

Como ves la diferencia con System.out.println son las dos letras "ln" al final, preciasamente esas letras son la abreviatura de line, de ahí que println signifique "escribir por consola e introducir un salto de línea".

En el método getListaCantantesFamosos() sería deseable que tuvieras en cuenta que un get se usa para devolver algo. Pero tu método es void getListaCantantesFamosos(), como es void no devuelve nada. En estos casos es preferible ponerlo otro nombre al método, por ejemplo mostrarCantantesDeLaLista. Si usas un get otro programador pensará que el método devuelve la lista, pero no es así.

Otra mejora sería eliminar estas líneas

Código: [Seleccionar]
System.out.println("Desea ingresar mas datos(si/no)");
entradaTeclado = sc.nextLine();

Esas líneas no parece que sean realmente necesarias, y si es así no parece buena idea mantenerlas

Saludos

289
Hola

He revisado el ejercicio y lo veo perfecto

Las preguntas sobre igualdad e identidad están bien planteadas, todo bien.

Con vistas al aprovechamiento del polimorfismo (comentado también en otros hilos del foro) se pueden declarar todos los cuadrados y círculos empleados con un tipo estático Figura, en este caso hacer ese cambio no afecta al resultado del programa

Código: [Seleccionar]
public class TestCirculoCuadrado
{
    public static void main(String [] Args){
        Figura cuadrado1 = new Cuadrado(5);
        Figura cuadrado2 = new Cuadrado(5);
        Figura cuadrado3 = new Cuadrado(8);
        Figura circulo1 = new Circulo(4);
        Figura circulo2 = new Circulo(4);
        Figura circulo3 = new Circulo(6);
        System.out.println("¿Son iguales cuadrado1 y cuadrado2? " + cuadrado1.equals(cuadrado2));
        System.out.println("¿Son el mismo objeto cuadrado1 y cuadrado2? " + (cuadrado1 == cuadrado2));
        System.out.println("¿Son iguales cuadrado1 y cuadrado3? " + cuadrado1.equals(cuadrado3));
        System.out.println("¿Son iguales circulo1 y circulo2? " + circulo1.equals(circulo2));
        System.out.println("¿Son el mismo objeto circulo1 y circulo2? " + (circulo1 == circulo2));
        System.out.println("¿Son iguales circulo1 y circulo3? " + circulo1.equals(circulo3));
    }
}

Saludos

290
Sí, con esto el ejercicio queda "completo".

Saludos

291
Hola

En estos hilos del foro tienes ejemplos de manejo de archivos en Java:

Listar archivos en una carpeta: www.aprenderaprogramar.com/foros/index.php?topic=1636

Leer datos de un archivo y escribir datos a un archivo: https://www.aprenderaprogramar.com/foros/index.php?topic=1154

Otro ejemplo de leer y escribir a archivo: https://www.aprenderaprogramar.com/foros/index.php?topic=712

Leer datos de un archivo: www.aprenderaprogramar.com/foros/index.php?topic=946

Si tienes dudas con un código abre un tema del foro y pega el código siguiendo las explicaciones que se dan en https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0

Saludos

292
Hola Campillo

El esquema de herencia está bien planteado y el código bien estructurado

La clase ProductosCongelados es una superclase intermedia bien planteada, como decía el enunciado del ejercicio:
"clases que sirven (aunque no se correspondan con la descripción dada de la empresa) para agrupar atributos y métodos cuando sea posible."

Has trabajado con algunas clases del api java que no se explican en el curso como Locale, Calendar, SimpleDateFormat... esto puede verse positivamente para ir adquiriendo soltura en el manejo del api Java

Te ha faltado (no sé si la has dejado olvidada al crear el post del foro) la clase con el main

Citar
Crear una clase testHerencia3 con el método main donde se creen: dos productos frescos, tres productos refrigerados y cinco productos congelados (2 de ellos congelados por agua, otros 2 por agua y 1 por nitrógeno). Mostrar la información de cada producto por pantalla.

Como aspecto a mejorar tendríamos la forma de nombrar las clases, en particular evitar el uso de plurales. Esto se explica en https://www.aprenderaprogramar.com/foros/index.php?topic=3035.0

Saludos

293
Hola Pedro, unas vacaciones siempre son buenas ;)

El ejercicio lo veo todo bien

Para ver los bordes con un poco más de amplitud se puede añadir la regla div {font-size: 120px;}

El border-bottom-color: #DAA520; creo que está equivocado de color con lo que pedía el enunciado

Saludos

294
Hola Arashinagase, es recomendable que leas el curso paso a paso y vayas haciendo pruebas con los códigos que se muestran en el curso, ejecutándolos tú en tu computador. Por ejemplo si en el curso se crea una clase Taxi, créala tú y haz pruebas para comprobar que todo te funciona como explica el curso.

Para tener una orientación de este ejercicio relee las explicaciones del curso y mira este hilo: https://www.aprenderaprogramar.com/foros/index.php?topic=1437

Una vez hayas hecho pruebas, intenta escribir una solución para el ejercicio sin consultar ni copiar desde otras fuentes y consulta si es correcta a través de los foros, esa será la mejor forma para aprender.

Saludos cordiales

295
Hola Campillo, he revisado el código, que en líneas generales está bien. Te indico las cosas que sería deseable mejorar o simplemente algunos puntos a comentar:

a) Los nombres de las clases: explicado en www.aprenderaprogramar.com/foros/index.php?topic=3035

b) Si un atributo pensamos que no va a usarse para operaciones numéricas es preferible que sea un String en lugar de un valor numérico (aunque esto es opcional)

private String codigoDeSupervisionAlimentaria; en lugar de private int codigoDeSupervisionAlimentaria; si pensamos que este código no va a usarse para cálculos. En cambio la temperatura sí es adecuado que sea un tipo numérico porque es posible que se utilice para cálculos.

c) Usar nombres descriptivos. Por ejemplo mostrarFechaCaducidadYNumLote() en lugar de fechaCaducidadYNumeroLote()

d) Si el nombre se vuelve muy largo buscar alternativas por ejemplo mostrarInfoProdFresco() o simplemente mostrarInfo() en lugar de fechaCaducidadNumeroLoteFechaEnvasadoYPaisOrigen()

e) La superclase posiblemente es una abstracción o forma de mantener en común cierto código, evitando su repetición. Posiblemente no sea adecuado instanciarla como haces con Productos productos1 = new Productos(fechaCaducidad, numeroLote);

Un hilo adecuado para consultar como solución es este: www.aprenderaprogramar.com/foros/index.php?topic=2306

Saludos cordiales

296
Hola, sí puedes seguir el curso con esa versión de java. El curso puede seguirse con cualquier versión de java superior o igual a java 6. Por tanto puede seguirse tanto con java 6, como java 7, java 8, etc.

Saludos

297
Hola luba, tal como dices faltaban los paréntesis. He editado el post y ya lo he corregido. ¡Gracias por advertirlo!

298
Hola calderas

Has cumplido con lo que pedía el ejercicio, métodos para calcular áreas, sobreescritura de los métodos equals y creación de un test donde realizas comparaciones, lo veo todo bien. En la clase figura has definido el atributo Pi. Esto conceptualmente no es muy acertado, ya que Pi no es aplicable a todas las figuras (por ejemplo en un cuadrado) y posiblemente hubiera sido mejor que estuviera asociado a la clase Circulo.

Saludos

299
Hola, a la vista de tu código veo que has creado distintas listas para los distintos tipos de productos. Es una opción de diseño. Otra opción hubiera sido crear una sola lista y tener en ellos los diferentes tipos de productos. Esto es posible gracias al polimorfismo de Java. Es decir podríamos escribir List<Producto> listaProductos = new ArrayList<Producto>(); y dentro de esa lista tener tanto productos frescos como refrigerados, congelados, etc. Esto es posible gracias a que Java admite en la lista cualquier cosa que sea de tipo Producto, y los distintos tipos de productos son a la vez de dos tipos: el tipo estático Producto y el tipo dinámico (por ejemplo ProductoFresco).

Un campo de clase o static representa algo que es común para todos los objetos y que por tanto no es algo distinguible en cada objeto, sino algo común a todos ellos.

Recomendaría releer http://aprenderaprogramar.com/index.php?option=com_content&view=article&id=639:static-final-en-java-palabras-clave-variables-de-clase-o-campos-estaticos-y-constantes-ejemplos-cu00673b&catid=68:curso-aprender-programacion-java-desde-cero&Itemid=188

A veces un campo podría ser static y sin embargo no se hace static, esto depende del programador y de la forma de diseño y de trabajo a la que esté acostumbrado. Por ello no hay una regla exacta. Voy a poner un ejemplo: supón que estás desarrollando un videojuego donde una entidad es un "Bloque". Supón que cada bloque se construye siempre a partir de 4 unidades elementales a las que denominamos ladrillos. En esa situación en la clase bloque podríamos escribir static int numeroDeLadrillos = 4;

Esto significaría que todos los bloques tienen 4 ladrillos. Al ser algo común a todos los bloques, sólo existe una vez, y por tanto no tendría método set (ya que set permitiría establecer el número de ladrillos para cada bloque, pero en este caso estamos diciendo que es algo común para todos los bloques).

Puedes plantearte cualquier situación y buscar ejemplos, aunque también es cierto que al principio no es fácil distinguir cómo debemos hacer los diseños como programadores. Para ir adquiriendo soltura con esto conviene ir estudiando, analizando código que crean otras personas y viendo cómo lo hacen, tomando ideas (buenas ideas) de libros o de internet, etc. Y a medida que pase el tiempo y se vaya programando se adquirirá soltura a la hora de realizar diseños de código, no es algo que se pueda estudiar y hacer bien a la primera.

Saludos

300
Hola adrit, me alegro que te hayas animado a mejorar tu código y que te haya resultado útil. Ahora el esquema de clases lo veo correcto y consistente, no contraviene la realidad. Usas una clase intermedia que no existe en la realidad (ProductoRefrigeradoOCongelado) pero sin desvirtuar un diseño correcto.

Los nombres de clases también los veo ahora correctos.

Los valores numéricos que antes definías indebidamente como String están ahora corregidos.

Has incurrido sin embargo en un nuevo error en el diseño, que debes tener en cuenta.

Por ejemplo en la clase ProductoFresco defines lo siguiente:
Código: [Seleccionar]
public class ProductoFresco extends Producto {
    private Calendar fechaEnvase;
    private String paisOrigen;
    private static ArrayList<ProductoFresco> lista = new ArrayList<ProductoFresco>();


¿Por qué no es conforme este diseño a las buenas prácticas de diseño? Porque una clase Java debe representar una única cosa. En este caso, si la clase representa un producto fresco, no tiene sentido que contenga una colección de productos frescos.

En un buen diseño, una clase representa una sola cosa y un método hace una sola cosa.

Si se quiere, se puede tener una clase que represente un producto fresco y otra clase que represente una lista de productos frescos, pero una clase no debe mezclar ambos conceptos.

¿Cómo resolver esto?

Lo más sencillo es eliminar de las clases tipo ProductoFresco toda referencia a listas. La clase representará únicamente lo que dice su nombre.

Luego en el main creamos los productos y los introducimos en una colección de tipo ArrayList. Si te fijas, así es como está resuelto en https://www.aprenderaprogramar.com/foros/index.php?topic=2935

Hay más opciones de diseño, pero creo que esta es la más sencilla para resolver el ejercicio.

Saludos

Páginas: 1 ... 10 11 12 13 14 [15] 16 17 18 19 20 ... 32

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