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 jupertivo tu clase EntradaDeTeclado está bien planteada.

En la clase ListaCantantesFamosos tienes esto:

Código: [Seleccionar]
    public ListaCantantesFamosos (String nombre) { //Constructor: crea una lista de nombres vacía
        nombreDeLaLista=nombre;
        listadenombres=new ArrayList<String>();
        System.out.println ("La lista se llama: "+nombreDeLaLista);
    }//Creamos el objeto de tipo ArrayList

Si ves comentarios en otros hilos verás que se recomienda no incluir System.out.println dentro de constructores ni métodos porque la responsabilidad de un constructor es inicializar los atributos de un objeto, no debe hacer nada más que esto (en el caso de métodos, debe cumplir con su responsabilidad y nada más que eso).

En cambio aquí sí lo tienes bien planteado:
Código: [Seleccionar]
    public String getNombre (int posicion) {
        if (posicion>=0 && posicion<listadenombres.size()) {
            return listadenombres.get(posicion);}
        else {return "No existe nombre para la posición solicitada";} }

Este método devuelve un String, que puede ser el nombre de la lista, o si no existe un String que es un aviso de que no existe nombre para la posición solicitada.

Tu clase con el main está muy bien, en pocas líneas haces uso de los objetos y diriges el programa.

Supongo que te habrás dado cuenta de que aunque tu código funciona bien no has cumplido con lo que pedía el enunciado:

Citar
Crea una clase denominada ListaCantantesFamosos que al ser inicializada contenga un ArrayList con tres Strings que sean el nombre de cantantes famosos. Crea una clase test con el método main que inicialice un objeto ListaCantantesFamosos, pida dos cantantes famosos más al usuario, los añada a la lista y muestre el contenido de la lista por pantalla.

Salu2

1322
Hola, el mensaje que obtienes

Citar
Warning: mysqli_connect() [function.mysqli-connect]: (HY000/2003): Can't connect to MySQL server on 'sql203.byethost7.com' (110) in /home/mario/public_html/prueba.php on line 14

Warning: mysqli_select_db() expects parameter 1 to be mysqli, boolean given in /home/mario/public_html/prueba.php on line 15

Fatal error: Call to a member function query() on a non-object in /home/mario/public_html/prueba.php on line 16

Indica que estás tratando de conectar a un servidor y no se puede conectar.

Si como dices estás trabajando con wamp, tienes que introducir como nombre del servidor localhost, como nombre de base de datos la base de datos que hayas creado con wamp (no la de un servidor remoto como byethost) y como nombre de usuario el nombre de usuario que tengas con wamp (si no lo has establecido puede que sea root o vacío).

Salu2

1323
Hola, pega el código con el que estés trabajando para poder verlo, de la forma en que se indica en https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0

Salu2

1324
Hola Kabuto, gracias por pegar la solución, le puede servir de ayuda para otras personas. Salu2

1325
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


1326
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

1328
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

1329
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

1330
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

1331
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

1332
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

1333
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

1334
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

1335
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

1336
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

1337
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!

1338
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

1339
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

1340
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

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