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 ... 62 63 64 65 66 [67] 68 69 70 71 72 ... 100
1321
Hola emilanesi lo primero por ser nuevo es pedirte que leas esto https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0
donde se encuentran indicaciones sobre cómo pegar código en el foro.

Tu ejercicio está bien resuelto. Verás que en muchos ejercicios usamos nombre = ""; que significa cadena vacía, en lugar de nombre = "Desconocido"; pero no está mal como tú lo has hecho.

Esto creo que lo puedes mejorar:

System.out.println ("Ha cambiado la condición del médico de nombre: " + nombre + " a " + valorCasado);

Prueba a ver el resultado y verás que el mensaje que sale es poco entendible. Seguro que puedes idear una forma de mostrar un mensaje más entendible.

Salu2


1322
Hola Arnaldo, la condición está bien pero la tienes dentro de un if que no es el correcto.

Código: [Seleccionar]
if(formulario[i].value == null || formulario[i].value.length == 0 || /^\s*$/.test(formulario[i].value)){
Al tener tu if dentro de este if, sólo te comprobaría si el campo contiene sólo letras en caso de estar vacío (esto no tiene sentido).

El if tendrías que ponerlo independiente, es decir, comprobar por un lado que no esté vacío y por otro lado que sean letras.

Siguiendo el ejemplo de http://aprenderaprogramar.com/index.php?option=com_content&view=article&id=874:validar-formularios-con-javascript-ejemplo-email-campo-no-vacio-radio-button-checkbox-select-cu01185e&catid=78:tutorial-basico-programador-web-javascript-desde-&Itemid=206

El código sería algo similar a esto:

 
Código: [Seleccionar]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html><head><title>Ejemplo aprenderaprogramar.com</title><meta charset="utf-8">
<style type="text/css"> body {margin-left:30px; font-family: sans-serif;} h4 {margin:0;} div {float:left;}
.estiloForm, #validacionDatos {background-color: #f3f3f3; border: solid 2px black; margin-left:10px; width:300px; }
.estiloForm{ width: 330px; padding:10px;} #validacionDatos {height:226px; padding:10px; background-color: yellow;}
.estiloForm label {display: block; width: 120px; float: left; text-align:right; margin-bottom: 35px; padding-right: 20px;}
br {clear: left;} input[type="submit"], input[type="reset"] {margin:25px 5px 10px 5px;}
</style>

<script type="text/javascript">
window.onload = function () {
                formularioContacto.addEventListener("submit", validarFormulario);
                document.getElementById('validacionDatos').style.visibility = 'hidden';
                formularioContacto.addEventListener("change", ocultarAvisos);
}

 

function ocultarAvisos() {document.getElementById('validacionDatos').style.visibility = 'hidden';}

function validarFormulario(evObject){
evObject.preventDefault();
var todoCorrecto = true;
var formulario = document.formularioContacto;

for(var i=0; i<formulario.length; i++){
if(formulario[i].type == 'text'){
if(formulario[i].value == null || formulario[i].value.length == 0 || /^\s*$/.test(formulario[i].value)){
alert (formulario[i].name + 'No puede estar vacio o contener espacios en blanco');
todoCorrecto=false;
}

if (/^[a-z][a-z]*/.test(formulario.nombre)==false){
                                       alert ('Nombre no valido');
   todoCorrecto=false;}
}

}
}
</script></head>

<body><h2>Cursos aprenderaprogramar.com</h2><h3>Ejemplos JavaScript</h3>
    <div class="estiloForm">
        <form name ="formularioContacto" method="get" action="http://aprenderaprogramar.com">
        <label>Tratamiento</label> <input type="radio" name="tratamiento" id="tratarSr" value="Sr."/>Sr.
       <input type="radio" name="tratamiento" id ="tratarSra" value="Sra."/>Sra.<br/>
       <label>Nombre</label><input id="nombre" name="nombre" type="text"/><br/>
        <label>Apellidos</label><input id="apellidos" name="apellidos" type="text"/><br/>
        <label>Dirección</label><input id="direccion1" name="direccion1" type="text"/><br/>
        <label>Ciudad</label><select id="ciudad" name="ciudad"><option value="">Elija opción</option>
            <option value="Mexico">México D.F. (MX)</option>   <option value="Madrid">Madrid (ES)</option>
            <option value="Santiago">Santiago (CL)</option>
        </select><br/>

                <label>Preferencias</label><input name="Libros" type="checkbox" />Libros
                <input name="Peliculas" type="checkbox"  />Películas
                <input type="submit" value="Enviar"/> <input type="reset" value="Cancelar"/>
                </form>
    </div>
<div style="float:left;"><div id="validacionDatos" style="float:left;"><h4> Aviso datos a revisar o corregir: </h4></div>
</div></body></html>

Salu2

1324
Hola Dan, ya que llevas realizada una buena parte del curso conviene que empieces a fijarte en detalles Te señalo este:

Código: [Seleccionar]
        public void RemoverCantante(int index){
        if(index >= 0 && index < cantantes.size()){
             cantantes.remove(index);
        }
        else
        {System.out.println("No existe cantante en esta casilla.");}
    }
       

Un método normalmente:

- Hace algo ó
- Devuelve algo ó
- Hace algo y devuelve algo

El trabajo de un método debe ser uniforme, no debe ocurrir que un método en algunos casos elimine un elemento de una lista y en otros muestre un mensaje por pantalla.

Mostrar mensajes por pantalla no suele ser un trabajo que deban realizar los métodos. El System.out.println normalmente debes delegarlo en el método main. Si necesitas que el método sirva para mostrar por pantalla haz que devuelva un String y después trátalo en el main.

En este caso se puede resolver así:

Código: [Seleccionar]
        public void RemoverCantante(int index){
        if(index >= 0 && index < cantantes.size()){
             cantantes.remove(index);
        }
        else{}
}
       

Donde el else vacío indica que no se hace nada. Realmente hay otras formas quizás mejores de resolverlo, pero no es el momento de ver esto. Simplemente recuerda que los métodos no deben en general mostrar mensajes por pantalla, si quieres que devuelva un mensaje haz que devuelva un String con el mensaje.

Salu2

1325
Hola Dan, todo correcto! Sobre la última pregunta se pueden hacer algunos comentarios, puedes leerlos en https://www.aprenderaprogramar.com/foros/index.php?topic=1978

Salu2

1326
Hola Dan la respuesta a) perfecta, la respuesta b) sería discutible. No inicializar es algo no recomendado, pero está permitido y no es ilegal, por lo tanto no podemos considerarlo un fallo en sentido estricto. Si no se inicializan los tres objetos apuntarían a null, esto es un caso especial y podríamos decir que sí existe relación de identidad entre ellos porque los tres apuntan a lo mismo, a null.

Aquí se comenta esto: www.aprenderaprogramar.com/foros/index.php?topic=1964

La pregunta c) está bien respondida, al tratarse de objetos no inicializados su contenido sería null



Salu2

1327
Hola, una clave primaria en la práctica profesional raramente es una clave compuesta, y menos por un nombre , apellidos y nombre de centro de trabajo.

Lo normal es que la clave primaria sea una columna única, por ejemplo idProfesores para la tabla profesores e idCentros para la tabla de centros. Si no tienes restricciones, esto sería lo que te recomendaría

Salu2

1328
Hola Redemption tu ejercicio está bien excepto que Aeropuerto no es una superclase de Aviones, Avionetas ni Helicópteros.

Una superclase es algo que engloba, por ejemplo Animal es superclase de Pato, Pollo, Perro porque un pato es un animal, un pollo es un animal y un perro es un animal. Pero un avión no es un aeropuerto, ni una avioneta es un aeropuerto, ni un helicóptero es un aeropuerto. Una superclase podríamos llamarla AparatoVolador ó MáquinaAutopropulsada. En ese caso, un avión es un aparato volador, una avioneta también y un helicóptero también.

Salu2

1329
Sí, gracias por la explicación, creo que le puede ser útil a quien lea el código para entender mejor lo que hace.

Salu2

1330
Saludos igualmente! Tienes que basarte en expresiones regulares como se explica en http://aprenderaprogramar.com/index.php?option=com_content&view=article&id=835:expresiones-regulares-javascript-regex-new-caracter-especial-numero-letra-espacio-blanco-cu01154e&catid=78:tutorial-basico-programador-web-javascript-desde-&Itemid=206:

\d Hace match con cualquier número entre 0 y 9

[a-z]    Rango de caracteres. Hace match con cualquier carácter comprendido entre el inicial y el final, en orden alfabético. Se pueden definir varios conjuntos uno detrás de otro, por ejemplo: [A-Za-z] indica “letra mayúscula o minúscula”.

Por ejemplo en el propio curso pone como ejemplo esto:

if (isNaN(formulario.edad.value)==true || /^[1-9]\d$/.test(formulario.edad.value)==false ) {alert ('Edad no valida'); todoCorrecto=false;}


Con esto se comprueba que sólo se admitan números.

Si quieres admitir sólo letras te basta poner algo como:

if ( /^[a-z][a-z]*/.test(formulario.edad.nombre)==false ) {alert ('Nombre no valido'); todoCorrecto=false;}


Salu2

1331
Hola ahora sí he podido ejecutar y visualizar lo que ocurre. Lo que he visto es que pasan varias cosas extrañas:

- Las pelotas rebotan por la parte de arriba del div tanto en las coordenadas iniciales del div como en algunos momentos en otras coordenadas

- Las pelotas no rebotan por la parte de abajo del div en movimiento, aunque a veces el rebote por abajo se produce en la parte inferior de la pantalla y a veces en un punto intermedio de la parte inferior.

No veo un sitio fijo para el rebote de las pelotas, y tampoco veo un patrón aparente que permita decir dónde van a rebotar.

El problema parece estar en cómo se fija el punto de rebote de las pelotas pero voy a intentar mirar el código con más detenimiento a ver si logro encontrar el problema

Salu2

1332
Hola aquí hay descrito un problema con Scanner en BlueJ y la respuesta obtenida, quizás sea útil

www.aprenderaprogramar.com/foros/index.php?topic=1211

Salu2

1333
Hola, primero mi enhorabuena porque has desarrollado un gran trabajo. Cosas que te puedo comentar para mejorar. Las clases nómbralas siempre en singular. En vez de DiscosMusicales sería DiscoMusical. Ten en cuenta que cuando hables con otro programador dirás: "he creado un objeto DiscoMusical" pero no sonará bien "He creado un objeto DiscosMusicales".

En el menún efectivamente patinas un poco ¿Por qué? Por la repetición de código. Para evitar esa repetición puedes usar colecciones de objetos ó arrays, pero esto se ve más adelante en el curso, así que ahora no te diría que corrijas nada, sino que esperes a avanzar en el curso y dentro de un tiempo revises este ejercicio para eliminar la repetición de código, seguro que un poco más adelante ya vas a ser capaz de ver cómo.

Lo importante ahora es que has sido capaz de mejorar tu código, corregir muchas cosas defectuosas y aplicar muchos conceptos que se han estudiado y lo has hecho correctamente, así que otra vez mi enhorabuena y a seguir así.

Salu2!

1334
Hola la inclusión de constructores con parámetros, métodos getter y setter, etc. debe hacerse en la medida en que sea necesario. ¿Y cuándo es necesario? Eso te lo irá diciendo tu experiencia como programador a medida que vayas avanzando. De momento hazte a la idea de que siempre debes incluir métodos get y set (cuando tengas más experiencia podrás cambiar esto). Y sobre los constructores: incluye siempre al menos un constructor. Si te resulta útil para lo que estés haciando, puedes incluir más de uno. Sigue avanzando y poco a poco irás adquiriendo experiencia sobre todo esto.

Salu2

1335
Hola Framonteu, tu declaración de atributos está bien, y tu constructor también. Pero te faltan los métodos getter y setter

Citar
Define un constructor y los métodos para poder establecer y obtener los valores de los atributos.

Sobre los constructores: una clase es como un molde para crear objetos. Cada vez que creas un objeto, lo harás con este molde. El constructor sirve para decir los valores iniciales que tendrán los atributos de los objetos. Tal y como tú has definido el constructor todos los objetos que se creen tendrán como nombre Jorge y como apellidos Pérez. Pero esto no es lo más adecuado. Para ver cómo debe hacerse léete el hilo https://www.aprenderaprogramar.com/foros/index.php?topic=1437

Salu2

1336
Hola Lorenzo, hay una parte que quizás sea útil que la aclares para otras personas que vean el código:

Código: [Seleccionar]
otroArray = Arrays.copyOf(miArray1, miArray1.length + 2);

        for(int i = 0; i < otroArray.length; i++){
            if( otroArray[i] < 0 ){ Arrays.fill (otroArray, i, i + 1, 33);}
        }

¿Serías capaz de explicar qué es lo que ocurre cuando se ejecuta el bucle y por qué después de ejecutado el bucle el contenido de otroArray es

otroArray 2
otroArray 33
otroArray 3
otroArray 33
otroArray 0
otroArray 0

?

Nota: hay un detalle en el mátodo fill según indica el api de java:

public static void fill(int[] a, int fromIndex, int toIndex, int val)
    fromIndex - the index of the first element (inclusive) to be filled with the specified value
    toIndex - the index of the last element (exclusive) to be filled with the specified value

Salu2

1337
Hola el ejercicio está correcto pero te falta completar lo que pide el enunciado (te faltan los métodos setters. getters son para obtener, setters para establecer)

Citar
Define un constructor que reciba los parámetros necesarios para la inicialización y los métodos para poder establecer y obtener los valores de los atributos.

Salu2

1338
Ummm ¿línea 343? No me cuadra, la numeración de líneas que me sale a mí es esta:

Código: [Seleccionar]
(331)                this.MOVER_DIV  = mover_div;
(332)               this.A1         = a1;
(333)                this.A2         = a2;
(334)                this.crear_ladrillo = crear_ladrillo;
(335)                this.obtener_x_origen_ladrillo = obtener_x_origen_ladrillo;
(336)                this.obtener_y_origen_ladrillo = obtener_y_origen_ladrillo;
(337)                this.obtener_x_final_ladrillo = obtener_x_final_ladrillo;
(338)                this.obtener_y_final_ladrillo = obtener_y_final_ladrillo;
(339)           }
(340)           
(341)            /* Función que mpleamos para crear el juego y arrancarlo. */
(342)           
(343)         function inicio_pelotas (){
(344)           
(345)                  var i = 0;

Si pongo eso en la línea 343 genero un error

En la línea 333 está esto: this.A2         = a2; pero es igual que lo que has indicado, no veo ningún cambio  ???

Salu2

1339
Hola de nuevo, he abierto el archivo pero no se ve nada (lo he intentado con dos navegadore distintos). Lo único que se ve es una línea y no se ve ninguna pelota ni nada que se mueva.  :-\

1340
Hola Rosalía

Ten en cuenta que no es lo mismo  private Boolean casado; que  private boolean casado; si va en minúsculas es tipo primitivo, si va en mayúsculas es objeto. Aquí es preferible usar tipo primitivo por ser más simple.

Esto numeroDocumentoIdentidad = ""; //inicializa a nulo

Es mejor expresarlo así numeroDocumentoIdentidad = ""; //inicializa a vacío

En java no es lo mismo nulo que vacío.

De resto todo muy bien. A continuar así

Salu2

Páginas: 1 ... 62 63 64 65 66 [67] 68 69 70 71 72 ... 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".