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

Páginas: 1 ... 10 11 12 13 14 [15] 16 17 18 19 20 ... 100
281
Buenas, las respuestas son correctas. Una curiosidad es que en Java "Juan Romero Sánchez" se considera un objeto (es un String), y anónimo porque no está asociado a ninguna variable que apunte a él. No obstante muchas veces los String se consideran objetos un tanto especiales. En https://aprenderaprogramar.com/foros/index.php?topic=1033.0 puede verse un ejemplo curioso como personajeM2 = new PersonajeMaldito("Lady Westfalia", new MaldadBipolar("Destruye sueños", "Encierra miradas"));
En ese ejemplo el segundo parámetro que se pasa al constructor es un objeto sin nombre que se inicializa al mismo tiempo que es pasado como constructor. En este caso el compilador tiene que en primer lugar crear el objeto MaldadBipolar e inicializarlo con los parámetros indicados, y luego crear el objeto PersonajeMaldito e inicializarlo a partir del String y del objeto MaldadBipolar creado.

Salu2

283
Buenas, el ejercicio cumple con lo requerido. Algunos comentarios.

En la clase ListaCantantesFamosos hay dos métodos que usan un parámetro llamado registroCantante, pero un caso con un significado y en otro caso con otro:

Código: [Seleccionar]
public void addCantanteFamoso (CantanteFamoso registroCantante) { listaCantantes.add (registroCantante); }
public CantanteFamoso getCantanteFamoso(int registroCantante) {return listaCantantes.get(registroCantante);}

En el primer caso registrocantente alude a un objeto CantanteFamoso. En el segundo alude a un entero (tipo primitivo). Esto aunque está permitido no es "muy elegante" porque puede originar algo de confusión. Mi recomendación sería usar algo como:

Código: [Seleccionar]
public void addCantanteFamoso (CantanteFamoso registroCantante) { listaCantantes.add (registroCantante); }
public CantanteFamoso getCantanteFamoso(int numRegistroCantante) {return listaCantantes.get(numRegistroCantante);}

Que básicamente es lo mismo, pero donde queda un poco más diferenciado que en un caso se alude a un objeto y en el otro a un entero.

Para quien esté siguiendo el curso y consulte este ejercicio, tener en cuenta que hay algún fragmento de código fuera de los contenidos del curso, por  ejemplo:

Código: [Seleccionar]
// Pausar la salida por pantalla *******************
System.out.print("\n******************** PULSE INTRO PARA CONTINUAR ***************\n");
try{
System.in.read();
}catch (IOException ex) {  } 

El ejercicio puede resolverse sin necesidad de este código, para ver un ejemplo consultar https://aprenderaprogramar.com/foros/index.php?topic=2889.0

Salu2

284
Buenas, se aconseja porque si necesitas contar en general es preferible usar un for normal (con contador) en lugar de usar un for extendido. En el for normal ya tienes el contador incorporado y no tienes que preocuparte por esa cuestión. Es decir, si no hubiera que hacerlo con un for extendido porque lo pide el ejercicio, bastaría usar

    public void mostrarCantantes(){
        for(int i=0;1<getTamaño();i++){
        System.out.println ("Elemento "+(i+1)+": " + getNombre(i) );
    }

y dejar que el control del contador lo lleve el propio for.

Pero como tú dices, puedes usar un contador en un for extendido (si quieres). Y también como has indicado, cuanto más compacto y menos redundante sea el código, mejor.

Salu2

285
Buenas, el código funciona bien y tiene una buena solución para evitar tener que estar respondiendo continuamente ¿Quiere continuar? (s/n), de hecho es mucho más cómodo como lo has programado, y es interesante para quien esté buscando formas de solucionar el ejercicio ver cómo lo has planteado. Un par de cosas a comentar. El for extendido está en la clase ListaCantantesFamosos y no en el main, lo cual está bien, aunque el enunciado parece más bien pedir que esté en el main. Creo que puede darse por bueno tanto una cosa como otra. En cuanto al uso de un contador con un for extendido, creo que es interesante que se lea lo que se comenta en https://aprenderaprogramar.com/foros/index.php?topic=3210.0

Salu2

286
Buenas, he intentado buscar si existe alguna explicación para el orden de letras que se eligieron y no he encontrado nada.

Algún comentario: la letra es únicamente un código de control, para comprobar si se ha escrito mal el número. Se divide el número entre 23 y el resto (de 0 a 22) nos da la posición de la letra en una tabla determinada (no ordenada alfabéticamente).

¿Por qué la tabla tiene ese orden concreto (y no otro)?

Posiblemente porque el creador (o el equipo que creó) del sistema decidió que fuera así. Podía haber decidido cualquier otro orden y hubiera sido igualmente válido. Si el orden es aleatorio o no no lo sabemos (al menos yo no lo sé). Puede que sea aleatorio, o puede que no.

Sí tiene un sentido qué letras se eligieron, por ejemplo:

No se utilizan las letras: I, Ñ, O, U

La I y la O se descartan para evitar confusiones con otros caracteres, como 1, l o 0. La Ñ para evitar confusiones con la N.

Se usan veintitrés letras por ser éste un número primo.

Dentro del DNI se usa otra tabla, que es esta, para calcular algunos dígitos de verificación (en este caso se trata de las cadenas de letras y números que aparecen en el reverso del DNI).

A 0
B 1
C 2
D 3
E 4
F 5
G 6
H 7
I 8
J 9
K 10
L 11
M 12
N 13
O 14
P 15
Q 16
R 17
S 18
T 19
U 20
V 21
W 22
X 23
Y 24
Z 25

El motivo de por qué una tabla y no otra habría que preguntárselo a quienes crearon estos algoritmos...

Salu2

287
Buenas, para pegar código, poner título a los temas, etc. mírate este hilo: https://aprenderaprogramar.com/foros/index.php?topic=1460.0 Para pegar código hazlo como se indica en ese hilo, no lo pegues como citas.

En tu código empieza por revisar la sintaxis del if else, no la tienes bien. Mira en https://aprenderaprogramar.com/index.php?option=com_content&view=article&id=797:if-else-if-else-if-javascript-condicionales-del-flujo-o-estructuras-de-decision-ejemplos-ejercicios-cu01119e&catid=78&Itemid=206 cómo se construye un if else.

En este fragmento tienes un error de sintaxis ya que no tienes bien cerradas las llaves del if.

 if ( !expr.test(correo) )
   {
        alert("Error: La dirección de correo " + correo + " es incorrecta.");
        return false;
     
   else if( !expr.test(nombre) )


Tienes que revisar toda la sintaxis de tu código. En el curso de JavaScript en https://aprenderaprogramar.com/index.php?option=com_content&view=category&id=78&Itemid=206 puedes ver ejemplos de todas las construcciones JavaScript y de validaciones

Salu2

288
Buenas, todo correcto. Muchos programadores prefieren no usar eñes en nombre de variables o métodos porque a la larga puede traer problemas, pero en teoría con Java no debería haberlos.

Salu2

289
Buenas, todo bien. Los "métodos mixtos" son relativamente comunes. Es una práctica antigua en programación proviniente quizás de Unix y C, donde es habitual que una función realice una tarea (por ejemplo la escritura en un archivo) y al mismo tiempo devuelva un valor entero. En base a dicho valor entero se puede saber si la operación deseada (p.ej. la escritura en archivo) se completó con éxito o no. Por ejemplo si devuelve 0 se puede considerar completado con éxito y si es otro valor, indica que ha ocurrido un fallo al intentar escribir el archivo.

Salu2

290
Buenas, es muy raro que ocurra pero ocasionalmente una clase se puede corromper (más que la clase, los ficheros que se crean asociados a esa clase) ó bien contener caracteres ocultos que generen errores de compilación. En ese caso, es recomendable copiar el código, eliminar la clase que da problemas y crear una nueva clase. Si aún así da problemas, ir pegando y compilando fragmento a fragmento hasta determinar qué fragmento ocasiona el problema.

Salu2

291
Buenas, yo sigo sin entender tu respuesta al apartado a) (igual me equivoco en algo). Si quieres pon un ejemplo del código tal y como lo estás pensando (puedes usar clases vacías para no tener que escribir código). Salu2

292
Buenas, comento algunas respuestas.

Pregunta a) No entiendo tu respuesta. "Si. Apuntan a un mismo objeto, el objeto Persona y a la hora de crearlos estos se crean con los mismos valores de los parametros que hay dentro del constructor esten o no por defecto."

Persona no es un objeto, es una clase. Puede haber un objeto Persona, o dos, o tres, o mil... Hablas del objeto Persona ¿a qué objeto persona te refieres?

Pregunta b) La pregunta dice que los atributos no se han inicializado en el constructor ¿Por qué dices que sus valores son diferentes?

Hay una relación de identidad especial en null. Mira lo que se comenta en https://aprenderaprogramar.com/foros/index.php?topic=1964.0

Pregunta c) Correcta

Salu2

293
Buenas, el código funciona a la perfección y tiene la originalidad respecto a otras soluciones que se pueden ver en el foro de que va mostrando ambas letras de las dos palabras que se comparan (cuando existen en las dos palabras), así que todo bien ;)

Salu2

294
Buenas, todo bien, el código cumple con lo que se pedía. Como comentamos en otro hilo, 0+i es lo mismo que i, luego sobra sumarle cero ;) Aunque no es objeto de este ejercicio dejo alguna pregunta planteada para quien quiera responderla. Si cuando nos pide la cadena pulsamos enter directamente (sin introducir ningún carácter), salta un error

java.lang.StringIndexOutOfBoundsException: String index out of range: 1

¿Por qué? ¿Cómo podríamos mejorar el código para que no salte ese error?

Otra curiosidad: en la octava línea, entre usar String entradaTeclado = ""; y String entradaTeclado; ¿Cuál es la diferencia? ¿Qué efecto tiene en el programa hacerlo de una manera u otra?

Salu2

295
Buenas y bienvenido, este foro es para presentarse a la comunidad. Para escribir en los foros mira este hilo y las indicaciones que da respecto a cómo poner títulos, pegar código, etc. : https://aprenderaprogramar.com/foros/index.php?topic=1460.0

En este curso tienes ejercicios similares resueltos: https://aprenderaprogramar.com/index.php?option=com_content&view=category&id=70&Itemid=193

En particular en las entregas CU00832B y siguientes puedes ver ejercicios de este tipo

Cambio el hilo al foro C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más

Salu2

296
Buenas, todo bien. Has escrito System.out.print(entradaTeclado.substring(0+i, i+1) +"\n"); pero como 0+i es lo mismo que i te podrías haber ahorrado dos caracteres de código, es decir, lo mismo da 0+i que i  :D

Salu2

297
Buenas, algún comentario. Como posibles mejoras:

a) getDuracionCancion en lugar de getDurCancion (mejor que se entienda si no es demasiado largo)

b) introducirDuracionCanciones en lugar de saludoIntroducirDuracionCancion (el saludo no es algo importante y hablamos de canciones no de una única canción)

c)  public double getDuracionDisco(){} , en lugar de  public int getDuracionDisco(){} ya que la duración de una canción se ha dicho que se expresa con decimales, luego su suma debe ser también un decimal, no un entero.

d) public void agregarCancion(String nuevoTitulo, double nuevaDuracion) en lugar de public void agregarCancion(String nuevoTitulo, int nuevaDuracion) por el mismo motivo

Salu2

298
Buenas, el ejercicio está bien resuelto aunque el constructor no es adecuado porque los valores de defecto que has tomado no son lógicos tal y como he comentado en https://aprenderaprogramar.com/foros/index.php?topic=7101.0

Tal vez inicializando con 0, false y cadena vacía los mensajes por consola deberían plantearse de otra manera, pero esto tampoco tiene demasiada importancia (el ejercicio planteaba el ser capaz de utilizar los parámetros recibidos por un método y los atributos, y eso está logrado).

Y una vez más, repito lo ya indicado: pon nombre a los temas de los foros como se indica en https://aprenderaprogramar.com/foros/index.php?topic=1460.0, por favor.

Salu2

299
Buenas, el ejercicio está bien resuelto, perfecto. Has usado como nombre de atributo yearEdicion en lugar de añoEdicion lo cual está bien pensado pues aunque Java soporta la ñ en general puede ser preferible no usarla porque a la larga puede dar problemas.

Por otro lado, repito lo ya indicado: pon nombre a los temas de los foros como se indica en https://aprenderaprogramar.com/foros/index.php?topic=1460.0, por favor.

Salu2

300
Buenas, el ejercicio está bien resuelto, te hago dos observaciones.

La primera: En lugar de inicializar nombre = "Paquito"; es preferible inicializar con "". En el hilo https://aprenderaprogramar.com/foros/index.php?topic=1948.0 se comenta algo. La lógica es que si tú inicializas con nombre Paquito todas las personas se van a llamar inicialmente al menos Paquito, y eso no es lógico. Por eso se usa la inicialización a "" que es la cadena vacía. Esto nos indicará que un objeto Persona que haya sido creado está recién creado y aún no se le ha asignado un valor a su atributo nombre. De resto todo bien

La segunda: pon nombre a los temas de los foros como se indica en https://aprenderaprogramar.com/foros/index.php?topic=1460.0, un título como Java desde Cero Ejercicio CU00623B no es correcto. Sería correcto por ejemplo Concepto de clase Java atributos constructor métodos CU00623B. Tenlo en cuenta por favor.

Salu2

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

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