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 - Alex Rodríguez

Páginas: [1] 2 3 4 5 6 ... 93
1
El mensaje de error parece aludir a que no encuentra el archivo datos.txt que parece que tienes definido en

archivo_leer = New StreamReader("./datos.txt")

Deberías comprobar que tienes el archivo creado y que la ruta es correcta. Al indicar ./datos.txt estarías aludiendo a que el archivo se encuentra en el directorio de trabajo actual que está usando Visual Basic, esto deberías comprobarlo.

¿Qué versión de VB estás usando? Esto deberías indicarlo en el título, como se explica en https://aprenderaprogramar.com/foros/index.php?topic=1460.0 , mira ahí las recomendaciones para poner título a los temas.

Saludos

2
De todo un poco... / Re: Servidor de Discord?
« en: 15 de Enero 2021, 18:02 »
Hola, en el hilo https://aprenderaprogramar.com/foros/index.php?topic=1460.0 tienes las normas y políticas que aplicamos en los foros. Saludos.

3
Hola mark255, recomendamos siempre que el código quede en los foros debido a que los enlaces suelen terminar fallando con el tiempo y dificultan la navegación. Como ha indicado Kabuto, además de pegar el código se puede añadir un enlace como forma "combinada" si se desea. Saludos.

4
Comunidad / Re: Feliz Navidad y Próspero Año Nuevo para todos
« en: 26 de Diciembre 2020, 17:47 »
Igualmente felices fiestas y mis mejores deseos para todos y todas.

5
Hola, el concepto de interface puede ser un poco difícil de captar al principio. Básicamente lo que hace una interface es definir cómo va a ser una clase en cuanto a cosas que debe cumplir, pero sin especificar el código concreto con el que va a cumplirse eso. Luego puede haber varias clases que cumplan (implementen) la interfaz de distintas maneras en cuanto al código concreto, pero los nombres y parámetros de los métodos definidos por la interfaz tendrán que incluirlos en todo caso. De todas formas este concepto de interface se estudia con más detalle más adelante en el curso, casi al final, por lo que ahora es suficiente con quedarse con la idea.

Respecto al ejercicio el código lo veo bastante bien planteado. Comentar algunas cosas:

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

- En la parte de recorridos con iteradores, creas un iterador para el ArrayList de Set y lo invocas, pero realmente no llegas a usarlo. Es un código "que está pero no se usa", por lo que no es útil. En concreto si comento varias líneas del código, el resultado que obtengo es el mismo porque realmente los iteradores que usas son sólo los del HashSet y los del TreeSet. Aquí el fragmento de código con las líneas comentadas:

Código: [Seleccionar]
        //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();
        //}


Podría hacerse uso del iterador del ArrayList así:

Código: [Seleccionar]
        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()){
            System.out.println("Elemento del ArrayList de Set: "+listaIterada.next());
        }
            while(lista1Iterada.hasNext()){
                System.out.print(lista1Iterada.next() + "," );
            }
            while(lista2Iterada.hasNext()){
                System.out.print(lista2Iterada.next());
                if (lista2Iterada.hasNext())
                {
                    System.out.print(",");
                   
                }
            }


En cualquier caso creo que puede darse el ejercicio por bueno.

Si se quiere ver una solución donde se recorren los elementos del ArrayList, y para cada uno se recorren sus elementos, puede encontrarse en https://aprenderaprogramar.com/foros/index.php?topic=2384.0 donde el bucle se plantea básicamente así:

Código: [Seleccionar]
        while (it1.hasNext()) {
            Set tmp = it1.next();
            Iterator it2=tmp.iterator();
            int i = 0;                               
            while(it2.hasNext()){
                System.out.println("i: " + (i++) + " - " + it2.next());
            }
        }

Correspondiendo el it1 al ArrayList de Set y por cada elemento extraído se crea un iterador it2 dentro del bucle. it1 nos devuelve objetos Set mientras que it2 nos puede devolver bien String bien Integer. Por eso para it2 si no declaramos el tipo, se maneja lo que devuelve como si elementos del supertipo Object.

Saludos

6
Hola, he revisado el ejercicio y aunque el código "funciona" hay varias cosas que habría que corregir.

- 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

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

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

En el hilo https://aprenderaprogramar.com/foros/index.php?topic=2889.0 puede verse una solución correcta con una buena distribución de responsabilidades y ordenación del código. Recomiendo revisarlo. Si te quedan dudas consulta. Saludos.

7
Hola, en este ejercicio faltan las etiquetas de php: inicio de script con <?php y cierre de script con ?>

En este otro hilo se presenta una solución al ejercicio y se comenta el problema de la codificación y cómo resolverlo usando el meta charset: https://aprenderaprogramar.com/foros/index.php?topic=4514.0

Saludos

8
Hola, el ejercicio 2 está bien resuelto. Falta el ejercicio 1. Quien quiera ver una solución completa (tanto ejercicio 1 como ejercicio 2) puede consultar el hilo https://aprenderaprogramar.com/foros/index.php?topic=4511.0

Saludos

9
Hola, el ejercicio está bien resuelto. Pueden verse algunos comentarios interesantes sobre este ejercicio en https://aprenderaprogramar.com/foros/index.php?topic=3269.0
Saludos.

10
Hola, para quien revise este ejercicio, está bien resuelto tanto respuestas a las preguntas como el código conforme a lo que pedía el ejercicio. Saludos.

11
Hola, ejercicio bien resuelto, cumpliendo con lo que se pedía. Saludos.

12
Hola, el ejercicio está bien resuelto. Como hay dos líneas que aplican la misma regla CSS (color:green;) se podrían unificar en una si se quiere, como se hace en https://aprenderaprogramar.com/foros/index.php?topic=3699.0

Saludos

13
Hola, el ejercicio está bien resuelto, cumple con lo que se pedía. Saludos.

14
Hola, lo veo todo correcto aunque en el apartado e) yo respondería "Verdadero, teniendo en cuenta lo que se indica en el curso: lo que envuelve a un elemento flotante es el texto de los elementos que vengan a continuación de él (no envuelven las cajas ni imágenes ni otro tipo de elementos, sólo texto) ¿Cuándo envuelve el texto de un elemento posterior a un elemento flotante? Cuando existe ancho (width) suficiente para que el siguiente elemento alcance el borde del elemento flotante y cuando el texto tiene longitud suficiente como para poder apreciar el efecto."

Saludos.

15
Hola, en este ejercicio al hablar de título principal de la página simplemente se refiere a que lo más destacado debe ser la etiqueta h1, y que no debe haber nada de mayor tamaño que lo que se indica para esta etiqueta. El ejercicio está bien resuelto conforme a lo que pedía el enunciado. Saludos.

16
Hola, en el código propuesto falta la etiqueta de declaración <!DOCTYPE html> así como las etiquetas <html> y <head>

De resto está bien resuelto.

Puede verse una solución para este ejercicio en https://aprenderaprogramar.com/foros/index.php?topic=3045.0

Sobre la cuestión consultada, no es necesario crear dos etiquetas form, en un mismo formulario puede ir el texto y el archivo.

Saludos

17
Hola, observaciones:

1) Se define dentro de la interface Edificio el método public int getNumeroDeOficinas(); Esto puede ser una opción, pero no se ajusta bien si pensamos que hay edificios que quizás no tengan oficinas, por ejemplo un edificio de viviendas.

2) Se propone una clase Construccion, pero esto no se atiene bien al enunciado del ejercicio, donde se hablaba de Polideportivos.

Puede verse una solución correcta a este ejercicio en https://aprenderaprogramar.com/foros/index.php?topic=2965.0

Saludos

18
Hola, ejercicio bien resuelto. En realidad la cámara en que trabaja estaba previsto que no se estableciera, sino que fuera <<Congreso>> para los diuputados y <<Senado>> para los senadores, pero eso no tiene mayor importancia. Quien quiera ver otra solución puede consultar https://aprenderaprogramar.com/foros/index.php?topic=2961.0
Saludos

19
Hola, el ejercicio está bien orientado pero con numerosas cuestiones que habría que comentar:

1) Las clases deben nombrarse en singular. Producto en lugar de Productos, porque vamos a crear objetos de tipo Producto, no de tipo Productos.

2) Hay que mantener coherencia a la hora de nombrar clases en el mismo nivel. Se indica por un lado CongeladosPorAire y por otro CongeladoPorAgua. Aquí el usar plural en un sitio y singular en otro parece que no tiene importancia, pero sí puede tenerla.

En este hilo se dan consejos sobre cómo nombrar clases y métodos en Java: https://aprenderaprogramar.com/foros/index.php?topic=3035.msg13698#msg13698

3) Hay cuestiones de diseño que no parecen del todo correctas. Por ejemplo en la clase Productos aparece como atributo private GestionarEntrada anio, mes, dia, textoIngresado;
El nombre GestionarEntrada tampoco es del todo correcto. Si es un objeto para gestionar entradas sería preferible GestorDeEntradas en lugar de GestionarEntrada. Este nombre es más propio de un método que de una clase.
El hecho de que la clase Productos tenga como atributos objetos de tipo GestionarEntrada no es un diseño del todo correcto. Cada clase define un tipo que permite crear objetos, y cada objeto debe tener unas responsabilidades bien delimitadas. En este ejercicio no parece tener lógica que dentro de la clase Productos existan atributos GestionarEntrada porque no se ve razón para que esto sea así.

4) Más cuestiones de diseño: en la clase Productos aparecen peticiones de datos por consola al usuario. Esto tampoco es muy razonable: un producto contiene información y permite su modificación, pero no pide nada al usuario. Pedir algo al usuario tendrá que ser responsabilidad de otros objetos de tipo Gestor, o bien del main, pero no de un producto.

5) Más cosas de diseño: en la clase ProductosFrescos no se define nada, cuando podría haberse aprovechado para definir aspectos o métodos comunes a las subclases, favoreciendo la reutilización de código. Lo mismo ocurre con ProductosCongelados. Ver por ejemplo esta solución: https://aprenderaprogramar.com/foros/index.php?topic=5590.0

6) Se nombra una clase como ProductosPreservados. Este nombre no aparece en el enunciado del ejercicio.

Puede verse una solución correcta para este ejercicio en https://aprenderaprogramar.com/foros/index.php?topic=2342.0

Saludos

20
Hola, el ejercicio está bien orientado. Observar que:

1) Las clases deben nombrarse en singular. Producto en lugar de Productos, porque vamos a crear objetos de tipo Producto, no de tipo Productos.

2) Hay que mantener coherencia a la hora de nombrar clases en el mismo nivel. Se indica por un lado CongeladosPorAire y por otro CongeladoPorAgua. Aquí el usar plural en un sitio y singular en otro parece que no tiene importancia, pero sí puede tenerla.

En este hilo se dan consejos sobre cómo nombrar clases y métodos en Java: https://aprenderaprogramar.com/foros/index.php?topic=3035.msg13698#msg13698

En este otro hilo hay algunos comentarios interesantes sobre este ejercicio: https://aprenderaprogramar.com/foros/index.php?topic=2360.0

Saludos

Páginas: [1] 2 3 4 5 6 ... 93
Esto es un laboratorio de ideas...
Aprender a programar

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