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 - Jorge lopez

Páginas: 1 2 3 4 5 [6] 7 8 9 10 11 ... 13
101
 Hola  Cabanota!

Algunas personas suelen confundir lo que se requiere en el enunciado de este ejercicio y precisamente este es tu caso, por lo cual intentare explicarte lo que requiere en realidad.

El enunciado dice:
Citar
Crea una clase con un método main que pida una entrada de teclado y usando condicionales, el método
length de la clase String y el método substring de la clase String, muestre un mensaje indicando:
a) Si la cadena introducida tiene menos de 5 caracteres, entre 5 y 15 caracteres o más de 15 caracteres.
b) Si la cadena introducida comienza por la letra a.
Ejemplo: se pide la entrada y el usuario introduce “vereda”. Por pantalla se debe mostrar: “La cadena
introducida tiene entre 5 y 15 caracteres y no comienza por a”.
La confusion surge de la parte a) del ejercicio, donde pide tres condiciones diferentes a tomar en cuenta, 1: Si la cadena introducida tiene menos de 5 caracteres, se muestra un mensaje. 2: Si la cadena introducida tiene entre 5,6,7... 15 caracteres, se muestra un mensaje. 3: Si la cadena introducida tiene mas de 15 caracteres, se muestra
un mensaje. Cada mensaje mostrado relacionado con la condición que se cumple para que este sea mostrado y con lo que pide la parte b) del ejercicio. Ejem: si la cadena introducida es "Alas" se debería mostrar por pantalla: La cadena introducida tiene menos de 5 caracteres y comienza por la letra "A".

Veo que has hecho bien al investigar sobre el método equalsIgnoreCase(String anotherString) e implementarlo en este ejercicio.

En cuanto al uso del condicional "if" tienes algunos if con else anidados unos dentro de otro, para lograr lo que quieres, lo correcto seria que hagas uso de if con else if evitando anidarlos uno dentro de otro. Tu codigo debería quedar mas o menos así:
Código: [Seleccionar]
if(..)
{
 ...;
}
else if(...)
{
 ...;
}

Otra recomendación es especificar exactamente con que "a" (mayúscula o minúscula) comienza la cadena, para esto sustituimos tu linea de codigo:
Código: [Seleccionar]
System.out.println("La cadena introducida tiene entre 5 y 15 caracteres y comienza por a"); por esta linea de codigo:
Código: [Seleccionar]
System.out.println("La cadena introducida tiene entre 5 y 15 caracteres y comienza por " + texto.substring(0,1));
Espero haberme explicado correctamente.

Saludos!

102
 Hola Arja!

Te comento: Para nombres de variables lo correcto es que inicien con letra minúscula, en vez de "Titulo"  lo correcto seria "titulo" el nombre de la variable "añoEdición" lo veo correcto, con la regla lowerCamelCase bien aplicada.

Has inicializado cada variable correctamente, aunque no estaría mal que inicialices las variables Titulo y Autor con valor = "Desconocido" idem a la variable Formato.

Otro punto a comentar y que ya te he comentado en el ejercicio que subiste correspondiente a la entrega CU00623B es sobre los nombres de métodos, para refrescarte la memoria podrías volver a leer dicho comentario en: https://www.aprenderaprogramar.com/foros/index.php?topic=1437.0 y si lo analizas podrías asociarlo a este ejercicio.

Saludos!

103
 Mucho mejor!

Solo comentarte que para los valores las variables de tipo String los paréntesis "()" están de mas, aunque tu código funciona igual con o sin ellos lo correcto es tratar de que tu código sea lo mas corto y claro posible por ende, si con una sintaxis como:
Código: [Seleccionar]
String nombre = (""); se obtiene el mismo resultado que con una sintaxis como:
Código: [Seleccionar]
String nombre = ""; yo en lo personal optaría por esta ultima (mas claro simple y sencillo, menos escribir, ext...). Esto es solo un comentario constructivo, en lo general puedes estar satisfecho (yo lo estoy  ;)) con esta respuesta a este ejercicio que has presentado y puedes continuar adelante con el curso.

Saludos!

104
Hola  Arja!

Para ser una persona que recien entra al mundo de la programacion (nivel novato) creo que has presentado una propuesta como solución a este ejercicio bastante aceptable.

Solo comentar dos puntos para que los tengas presentes en tus futuros codigos.

1ro: Para las variables de tipo String e int has inicializado sus valores con su valor por defecto correcto, en cambio para la variable de tipo boolean "casado" la has inicializado con un valor diferente a su valor por defecto que es "false" (tu la has inicializado con valor true). Lo recomendable es siempre inicializar una variable a su valor por defecto, a menos que no sea un caso especial que requiera lo contrario.

2do: A diferencia de los métodos getters donde si lo has hecho correctamente, en algunos casos de los métodos setters no has respetado o implementado una regla muy importante. Esta es la regla o estilo camelCase, exactamente su variación lowerCamelCase  http://es.wikipedia.org/wiki/CamelCase donde se usan palabras o frases compuestas, y donde la primera palabra se escribe en letras minúsculas y cada primera letra de las posibles siguientes palabras se escriben en mayúsculas. Esta regla (lowerCamelCase) se aplica a nombres de variables y nombres de métodos. Para nombres de clases se implementa la variación "UpperCamelCase" donde  la primera letra de cada una de las palabras es mayúscula. Ejemplo: public class EjemploDeUpperCamelCase.

Saludos!

105
 Hola  KillerNemesis!

Tu código cumple con lo requerido en el enunciado del ejercicio de esta entrega, no obstante te comento lo siguiente:

Aunque en otras entregas ayas visto ejercicios donde un método set ademas de realizar su procedimiento asignado, el cual es re definir el valor de una variable, también muestre por pantalla un mensaje mediante una instrucción "System.out.println();" Te hago la aclaración de que esto no se considera como una buena practica de diseño de código.

Tal Vez esto te resulte confuso cuando en entregas anteriores como por ejemplo en el ejercicio de la entrega "CU00632B" una parte de lo requerido dice:
Citar
En cada método, incluye una instrucción para que se muestre por consola un mensaje
informando del cambio. Por ejemplo si cambia la especialidad del médico, debe aparecer un mensaje
que diga: “Ha cambiado la especialidad del médico de nombre … . La nueva especialidad es: …”.
En esta entrega esto se hace a modo de practica, para ir familiarizando con lo que es mostrar mensajes por pantalla. Ya en entregas mas avanzadas como lo e esta (CU00636B) esa "mala practica" debería ir quedando atrás. Quédate con la idea de que tanto los métodos setters como los métodos getters solo deben realizar una tarea
(reasignar y devolver el valor de una variable respectivamente) y que no se les debe sobrecargar con mas tareas como mostrar mensajes por pantalla ext...

En cuanto a tu duda:
Citar
Al momento de hacer la prueba del primer Inciso "a)" todo va perfecto! mi duda surge aquí; cuando modifico solo el valor "grosor" sobre ese mismo objeto que cree para verificar los puntos del inciso  "b)" me sigue apareciendo en pantalla los mensajes del inciso "a). Ahora si vuelvo a compilar el código y de nuevo creo un objeto, pero esta ves ingreso los datos para verificar el inciso "b) me va perfecto el proceso y Viceversa.
Puesto que tu código esta dentro de lo que cabe decir correcto
(no correcto de un todo por lo que ya te comente sobre los métodos setters) me párese que lo que dices podría surgir debido a una configuración de la consola de mensajes de BlueJ. En dicha terminal en la esquina superior izquierda busca la opción "Options" (Opciones) y activa la opción: "Clear screen at method call"
(Limpiar pantalla al llamar un método) y luego prueba a ver si surgen cambios en cuanto a tus expectativas.

Saludos!

106
 Hola KillerNemesis!

Tu ejercicio esta correcto  ;)

Saludos!

107
 Hola mily!

Estuve mirando tu ejercicio y verificando me doy cuenta de que no se corresponde con lo requerido en el enunciado de la entrega CU00695B y que aunque se asemeja al ejercicio de la unidad CU00694B (por tener "las" clases que esta solicita) tampoco se corresponde con esta. No obstante, eh verificado tu código y te e dejado un archivo.rar con las 6 clases de tu código editadas y comentadas en cada punto donde encontré un error o donde se puede hacer alguna mejoría. Me enfoque mas en la parte funcional de tu código, pero si me sentara a mejorarlo al "100%" lo mejor para mi seria comenzarlo desde 0. Eh modificado solo lo necesario para que el código trabaje y para que asimiles los errores y los puedas evitar en futuros programas.

También tengo una curiosidad cuando dices:
Citar
estoy empezando a programar ,se supone que debo sacar el perimetro y area de las figuras
usando herencia y metodos get y set --tengo lo siguiente --- no se cuales son los errores--
les agradezco su ayuda

Si estas empezando a programar creo que has comenzado por una entrega muy avanzada "CU00695B" me gustaría saber si has seguido el curso aprender a programar desde cero, desde su inicio hasta esta entrega "CU00695B"? y de no ser así te recomiendo hacerlo (realizar el curso completo).

Luego de que analices el código que aquí te dejo y cada uno de los comentarios que incluí, si tienes alguna duda o pregunta no dudes en preguntar.

Espero que encuentres algo útil en el código que eh editado.

while(true)
{
  System.out.println("Saludos!");
}

108
 Hola  KillerNemesis!

Tu ejercicio cumple con lo requerido, no obstante hay algunos puntos a comentar.

1ro: El nombre de tu clase no es apropiado por el "simple" hecho de pluralizar. En POO
(Programacion Orientada a Objetos) es preferible no pluralizar al momento de dar nombre a una clase, porque? bueno! un ejemplo logico seria: Cuando creas una instancia de clase (objeto) mediante una sintaxis como: Medicos medico = new Medicos(); estas creando un solo objeto y no varios objetos Medicos, una clase define objetos pero por separado, entonces es mas logico que tu clase Medicos use su nombre en singular "Medico".

2do: A diferencia de los metodos Setter, en tus metodos Getters no has implementado la regla camelCase: Esta es la regla o estilo camelCase, exactamente su variación lowerCamelCase
http://es.wikipedia.org/wiki/CamelCase donde se usan palabras o frases compuestas, y donde
la primera palabra se escribe en letras minúsculas y cada primera letra de las posibles
siguientes palabras se escriben en mayúsculas.

3ro: Has declarado: public int age() {return age;} donde debiste decarar: public int getAge() {return age;} (olvidaste anteponer la palabra "get").

4to: A modo de consejo, te sugiero inicializar las variables name, lastname specialty y DNI con valor = "Unknown"; en lugar de valor = "";

De mi parte eso es todo.

while(true)
{
  System.out.println("Saludos!  ;)");
}

109
 Hola Hugo_Rod!

Creo que es como dices, el problema para interpretar cuantas clases se requieren usar para realzar este ejercicio podría surgir dependiendo de como interpretes lo que requiere el enunciado de este ejercicio. Al leer esto:
Citar
Definir dos interfaces y una clase que implemente ambas interfaces para representar la situación
anterior.
se interpreta que el ejercicio requiere solo de 2 interfaces + una clase concreta = 3 clases
(+ una clase con el método main = 4 clases).

Si analizamos el enunciado del ejercicio completo, se pueden identificar las siguientes clases
(resaltadas en color rojo) de las que debe disponer este ejercicio:
Citar
Se plantea desarrollar un programa Java que permita representar la siguiente situación. Una instalación deportiva es un recinto delimitado donde se practican deportes, en Java interesa disponer de un
método int getTipoDeInstalacion(). Un edificio es una construcción cubierta y en Java interesa disponer
de un método double getSuperficieEdificio(). Un polideportivo es al mismo tiempo una instalación
deportiva y un edificio; en Java interesa conocer la superficie que tiene y el nombre que tiene. Un
edificio de oficinas es un edificio; en Java interesa conocer el número de oficinas que tiene.

Si a estas 4 le sumamos otra clase mas (que seria la del método main) obtendríamos las 5 clases que encuentras en la solución que eh propuesto.

Detalles sobre el esquema de clases: Por una parte tenemos la interface InstalacionDeportiva y la interface Edificio y por otra parte tenemos las clases concretas PoliDeportivo, EdificioDeOficinas y la clase concreta con el metodo main TestSemejansaHerenciaMult.

La clase poliDeportivo implementa las dos interfaces, por tanto, toda instancia de la clase poliDeportivo sera a su vez de tres tipos (PoliDeportivo, InstalacionDeportiva y Edificio)

La clase EdificioDeOficinas solo implementa a la interface Edificio, por tanto, toda instancia de la clase EdificioDeOficinas sera a su vez de dos tipos (EdificioDeOficinas y Edificio). Esta clase no puede ser del tipo InstalacionDeportiva, puesto que entre estas no hay una relación directa o indirecta.

Otra cosa fuera si la clase EdificioDeOficinas heredara (extends) de la clase PoliDeportivo, de ser así esta clase "heredaría" de forma directa el tipo de PoliDeportivo y de forma indirecta el tipo de InstalacionDeportiva.

No se si me he explicado correctamente referente a tu duda, de no ser así me gustaría que me detalles mas sobre esta para poder ayudarte.

Nota: Toda instancia de clase es a su vez del tipo "Object" puesto que todas las clases heredan de la clase del api de java Object.

while(true)
{
  System.out.println("Saludos!  :)");
}

110
 Hola KillerNemesis!

Tu codigo se podría decir que cumple con lo que pide el ejercicio, no obstante en cuanto al diseño, tiene unos cuantos puntos que pueden ser mejorados y otros que deben ser corregidos.

Puntos a corregir:

Lo correcto al declarar una variable es antes de definir su tipo de acceso, esto lo entenderás mas adelante conforme avances en el curso (todo a su tiempo) por ahora quedate con la idea de que todas las variables deben de ser declaradas antecedidas por la palabra clave (Controladora de acceso) private. Ejemps:
private String nombre; private int edad; private... y asi sucesivamente.

Otra cosa que no es muy correcta que digamos, es inicializar variables con valores diferentes a su valor por defecto (a menos que no sea un caso especial). Tu has asignado como valor inicial para la variable edad "30" (edad = 30;) cuando lo correcto seria asignar su valor por defecto "0" (edad = 0), cada variable de tipo primitivo tiene un valor por defecto diferente según su tipo. int = 0; boolean = false; double = 0.0 por citarte solo algunos.

Punto a mejorar: Tus mensajes mostrados no son malos, pero si se pueden mejorar, por ejemplo mira este metodo de tu clase el cual eh editado.
Código: [Seleccionar]
public void setEdad(int valorEdad){
        edad = valorEdad;
        System.out.println("Ha cambiado la edad del medico " + nombre + " " + apellidos + ", La nueva edad es " + edad + " años.");
    }
La idea es ser mas explicito, y a su vez practicar con lo aprendido en esta entrega como lo es usar el operador "+" para concatenar cadenas.

Citar
Porque solo puedo modificar los valores de edad y casado pero al intentar modificar cualquier otro como apellidos obtengo un mensaje "Error:cannot find symbol- variable Lopez"  si me pudieran decir que es lo que estoy haciendo mal o explicarme por que sucede esto
En vez de tratar de pasarle como parámetro (Lopez)  intenta pasarle ("Lopez") osea, que  lo que escribas este dentro de las comillas pertenecientes a un String  ;)

Nota: Entre los puntos a corregir sumemos la observacional de toni_apr sobre el metodo "public void setCasado(boolean valorCasado)" el cual pase por alto ;D

Saludos!

111
Aprender a programar desde cero / Re:CU00678B
« en: 07 de Octubre 2014, 18:46 »
 Hola momo!

Veo que has incluido mejoras positivas en este nuevo código y aunque casi aciertas, no has logrado exactamente lo que te pedí ni lo que pide el enunciado del ejercicio. Por tanto, hay unos cuantos puntos que te comentare.

1ro: Estamos trabajando con "polimorfismo" por lo tanto, mientras mas uses las ventajas del polimorfismo en este ejercicio (y en cada uno de los códigos que diseñes) obtendrás un código mejor estructurado y con mayor eficiencia. No estaria de mas que incluyas un: import java.util.List para luego en ves de
Código: [Seleccionar]
ArrayList<Set>lista=new ArrayList<Set>(); declarar
Código: [Seleccionar]
List<Set>lista=new ArrayList<Set>();.

2do: Tu código esta mostrando por pantalla: "Saturno,Sol,Luna,2,5,8," y el ejercicio pide que muestre "sol, luna, saturno, 8, 5, 2.". La primera diferencia es el orden de los objetos y la segunda es que tu cadena termina con una coma "," cuando debería terminar con un punto "."

3ro: Has delclarado
Código: [Seleccionar]
ArrayList<Set>lista2=new ArrayList<Set>(); y no le das ninguna utilidad (imagino que fue un descuido no eliminar esa linea de código)

4to: Si te fijas, al compilar nos salta un "warning" Siempre que nos salte un warning debemos de buscar la forma de eliminarlo, un programa puede funcionar a pesar de contener un warning al compilar, pero esto significa deficiencia, o que hay algo que se podría corregir.

A continuación dejo una posible solución a este ejercicio, te sugiero que la analices y realices algunas pruebas y/o cambios.
Código: [Seleccionar]

 import java.util.List;
 import java.util.ArrayList;
 import java.util.Set;
 import java.util.HashSet;
 import java.util.TreeSet;
 import java.util.Iterator;
public class TestPolimorfismo
{   
    public static void main(String []args)
    {
      //Creacion de objetos de tipos dinámicos List y Set.
      List<Set> listObjsUniversoYNumeros = new ArrayList<Set>();
      Set<String> universo = new HashSet<String>();
      Set<Integer> numeros = new TreeSet<Integer>();
      //agregando elementos  de tipo String a la colección universo de tipo HashSet
      universo.add("sol"); universo.add("luna"); universo.add("saturno");
      //agregando elementos  de tipo Integer a la colección números de tipo TreeSet
      numeros.add(2); numeros.add(8); numeros.add(5);
      //agregando elementos  de tipos (HashSet y TreeSet) que implementan a la clase Set, a la colección listObjsUniversoYNumeros de tipo ArrayList
      listObjsUniversoYNumeros.add(universo);
      listObjsUniversoYNumeros.add(numeros);
      //Usando iteradores en colecciones.
      Iterator<Set> iteratorAL = listObjsUniversoYNumeros.iterator();
      Set elemento0 = iteratorAL.next();
      Set elemento1 = iteratorAL.next();
      /*El compilador no llega a poder verificar qué tipos contienen los Set, eliminamos la declaración de tipo de Iterator (Iterator<Set>) y dejamos que sea
       * el compilador en tiempo dinámico quien lo determine, así corregimos el warning que nos salta*/
      Iterator iterElemento0 = elemento0.iterator();
      Iterator iterElemento1 = elemento1.iterator();
      //recorriendo y mostrando por pantalla los elementos de las colecciones universo y numeros, a través de Iterator
      String separador = ", ";
      System.out.print("\nConjunto de los objetos contenidos en cada una de las sub-colecciones que contiene la colección listObjsUniversoYNumeros: ");
      while(iterElemento0.hasNext())
      {
        System.out.print(iterElemento0.next() + separador);
      }
      int i = 0;
      while(iterElemento1.hasNext())
      {
        i++;
        if(i == elemento1.size())
        {
          separador = ".";
        }
        System.out.print(iterElemento1.next() + separador);
      }
      System.out.println("\nTotal: " + (universo.size() + numeros.size()) + " elementos.");       
    }
}
Nota: El orden en que se muestran los objetos por pantalla, (se puede corregir) continua diferente con relación a el orden que se muestra en el ejercicio.

Saludos!

112
Aprender a programar desde cero / Re:CU00678B
« en: 06 de Octubre 2014, 17:50 »
 Hola momo!

Aunque vas en buena dirección, a mi entender hay una parte del ejercicio que no entendiste muy bien y tratare de explicártela para que rediseñes el codigo de tu ejercicio.

En la parte "e" el ejercicio pide lo siguiente
Citar
e) Usa iteradores para recorrer los elementos del ArrayList y recorrer el contenido de cada uno
de los elementos y mostrar este contenido por pantalla. Por pantalla deberás
obtener “sol”, “luna”, “saturno”, 8, 5, 2.
Fíjate que lo que se debe de mostrar por pantalla, esta en una sola linea y sin los corchetes "[]" para lograr eso se te pide usar mas de un solo iterador en tu código.

Ten en cuenta que las colecciones HashSet y TreeSet admiten el metodo iterator();

Ahora trata de rediseñar tu código para que se muestre por pantalla exactamente la cadena de texto: sol, saturno, luna, 2, 5, 8.

Saludos!

113
Aprender a programar desde cero / Re:Programar una compra
« en: 05 de Octubre 2014, 19:37 »
 Hola rik!

Te are una pregunta con sus posibles respuestas para tratar de orientarte en este tema.

Pregunta: Cual es tu objetivo al interesarte por un programa que realice lo que indicas?

posibles respuestas:

A: Quiero programar este programa por mi cuenta.

B: Solo necesito este programa sin tener que estudiar mucho sobre programación, y realizarlo yo mismo.

C: Ninguna de las anteriores posibles respuestas coinciden con mi objetivo.

Teniendo en cuenta tu pos data:
Citar
Tengo 0 conocimiento de programación  :-\
te comento lo siguiente:

Si tu respuesta es A: Intentar hacer un programa como este, teniendo un nivel de programación 0, es como ir a la universidad sin saber leer, primero te debes preocupar por aprender a leer (Conocer sobre programación) y cuando estés al nivel necesario podrás realizar este programa prácticamente sin solicitar ayuda. Una buena opción para orientarte sobre como empezar a programar, entre otras preguntas que surgen cuando comenzamos a involucrarnos con lo que es la programación por primera vez, es que leas el siguiente articulo: https://www.aprenderaprogramar.com/foros/index.php?topic=1313.0

Si tu respuesta es B: Esto no es imposible, pero no es lo adecuado, puesto que "aprenderás" a realizar tal vez
(y con un material de apoyo muy completo y detallado) ese programa en especifico, pero los conocimientos que adquieras no tendrán base, y por tanto se podrían derrumbar ante una "sencilla" tarea, como seria una actualización del programa basada en cambios sobre funciones básicas. Ademas te aseguro que no sera para nada pero para nada fácil.

Si tu respuesta es C: Pues nos gustaría que dejes clara tu intención para así poder darte nuestra mejor opinión.

Saludos!

114
 Hola  luispdl!

Tu ejercicio cumple con lo requerido en el enunciado de este ejercicio, sin embargo hay unos cuantos puntos a comentar.

1ro: Has declarado "class Medico" esto es valido pero no recomendable, lo correcto seria "public class Medico" si no le indicas al compilador que la clase es publica mediante el controlador de acceso "public" quien mire tu codigo podria pensar que has olvidado incluir esta palabra clave ya que lo normal es declarar:
(tipodeacceso class NombreDeLaClase) public class Medico.

2do: Has inicializado las variables correctamente, cada una con su valor por defecto, pero analizando tu codigo se puede observar que tiene una deficiencia. Cuando por ejemplo invocamos el metodo setNombre(String valorNombre) este nos muestra el siguiente mensaje por pantalla (ejemplo): "Ha cambiado el nombre del medico de nombre  a juan. Cuando tiene en su cuerpo la siguiente sintaxis:
Código: [Seleccionar]
System.out.println("Ha cambiado el nombre del medico de nombre "+ nombre + apellido + " a "+ valorNombre );
Fíjate que tu intención es primero mostrar el nombre  y apellido actual del medico y luego el nombre al que se acaba de actualizar (valorNombre) la variable nombre, seria algo asi como: "Ha cambiado el nombre del medico de nombre jose perez a juan"

Solo esta saliendo el nombre al que acaba de actualizar la variable nombre, porque sucede esto? Es lógico que suceda porque se esta mostrando por pantalla el primer valor de las variables nombre y apellido, el cual según las has inicializado es: ""; (una cadena de texto vacía).

Prueba a inicializar los valores iniciales de nombre y apellido de la siguiente manera: nombre = "Desconocido"; apellido = "Desconocido"; y ahora invoca tu metodo setNombre(String valorNombre);

No notas algo mas lógico?

Conclusión: inicializar variables con su valor por defecto, siempre ha de ser lo mas correcto, a menos que se nos presenten situaciones especiales como estas, donde lo mas logico es asignar como primer valor (inicializar) a las variables nombre, apellido y DNI un valor como "Desconocido"; y especialidad con valor "Desconocida";

Tu constructor quedaría mas o menos asi:
Código: [Seleccionar]
public Medico(){
        nombre = "Desconocido";
        apellido = "Desconocido";
        edad = 0;
        casado = false;
        DNI = "Desconocido";
        especialidad = "Desconocida";
    }
Y tu metodo setNombre(String valorNombre); quedaría mas o menos asi:
Código: [Seleccionar]
public void setNombre( String valorNombre) {
        System.out.println("Ha cambiado el nombre del medico de nombre "+ nombre + " " + apellido + " a "+ valorNombre + " " + apellido);
        nombre = valorNombre;
    }

Segun avances en el curso te daras de cuenta que no es necesario que un método set realice otras tareas aparte de su tarea original (redefnir el valor de una variable), como lo es mostrar un mensaje por pantalla ext..

También mas adelante veras la forma correcta de delarar las variables, cuya sintaxis es:
"tipoDeAcceso tipoDeLaVariable nombreDeLaVariable" (private String nombre) ext.. Pero todo a su tiempo, así que continua avanzando que vas bien.

Saludos!

115
Citar
lo que no acabo de tener claro es cómo tener la seguridad de que el nombre de una clase no coincide con un nombre del api de java

Paso 1: Elegir uno de los siguientes links según la versión de java con que trabajas en tu ordenador o pc
(en mi caso uso java 8 )

java 5: http://docs.oracle.com/javase/1.5.0/docs/api/
java 6: http://docs.oracle.com/javase/6/docs/api/
java 7: http://docs.oracle.com/javase/7/docs/api/
java 8: http://docs.oracle.com/javase/8/docs/api/

(hay otras documentaciones, como java 4, 3, ext.. de las cuales no incluí links por ser muy antiguas)

Paso 2: Presionar la combinación de teclas " Ctrl + f " y escribir allí el nombre de la clase a consultar.

Paso 3: En caso de aparecer, consultar dicha clase y sus métodos a fin de comprobar si contiene lo que necesitas (de ser así, te evitara complicarte la vida. Lolz)

Paso 4: No hay paso 4 ;D

Esta seria una opción como respuesta a tu pregunta Susana83.

Si deseas conocer mas a fondo sobre el api de java, también puedes visitar el siguiente link: https://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=551:que-es-y-para-que-sirve-el-api-de-java-librerias-de-biblioteca-estandar-jdbc-javafx-rmi-cu00645b&catid=68:curso-aprender-programacion-java-desde-cero&Itemid=188

Y aun hay mas en: https://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=562:organizacion-del-api-java-principales-clases-o-librerias-y-nombres-diferencias-java-y-javax-cu00646b&catid=68:curso-aprender-programacion-java-desde-cero&Itemid=188

Saludos!

116
Aprender a programar desde cero / Re:Ejercicio CU00637B
« en: 02 de Octubre 2014, 21:28 »
 Hola Zikem10!

Te hago un aporte mas, que va de la mano con la respuesta que te a dado  Ogramar, tal vez no tiene que ver con el ejercicio pero pienso que te sera util  ;)

//Para hacer comentarios de una linea en java se utiliza el símbolo "//"

/*Si necesitas hacer un comentario extenso y probablemente te lleve mas de una linea, pues lo correcto es usar el símbolo "/*aquí tu comentario*/" el cual te evita hacer eso que has hecho de usar el símbolo // en cada linea que comienzas. Aquí cuando quieras una nueva linea basta con presionar intro (ENTER) mientras el cursor este dentro del símbolo de comentario multilinea.*/

Si te interesan mas detalles sobre comentarios en java, puedes encontrarlos aquí: https://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=407:comentarios-en-linea-o-multilinea-en-codigo-de-programacion-java-concepto-de-bloque-de-codigo-cu00618b&catid=68:curso-aprender-programacion-java-desde-cero&Itemid=188

Saludos!

117
Aprender a programar desde cero / Re:error oculto java
« en: 01 de Octubre 2014, 17:00 »
 Hola Susana83!

Te comento lo siguiente: La clase Vector es una clase del api de java, y pertenece al package "util" de java.

Para poder hacer uso de esta clase en una clase propia, como lo es la clase VectorUser en tu ejercicio, hemos de declarar en cabecera de clase la sentencia "import java.util.Vector;" para evitar un error en compilación.

En tu ejercicio podemos observar una linea de comentario que dice :
Citar
// import java.util.Vector; omitted
(esta sentencia fue omitida), ahora bien, porque si se omitió esta sentencia el código compila?

Respuesta:

Tu clase VectorUser tiene a su vez una clase Vector, definida con el objetivo de ser usada por esta clase (VectorUser), cuando dos clases se encuentran en un mismo package, no es necesario incluir la sentencia "import Projecto.package.NombreDeLaClase" (import java.util.Vector), porque donde el compilador java busca esta clase, es en el package actual desde donde esta siendo invocada la clase, de no encontrarla (por pertenecer a otro package diferente), pues se necesita especificar la ruta de la clase mediante una sentencia import.

Si contamos con una clase Vector en el api de java, y esta disponible su uso, para que crear una clase Vector en tu clase VectorUser? No fuera mas lógico importar la clase Vector mediante una sentencia import?

Aquí es donde entra lo que yo llamaría un "error lógico" en tu ejercicio. Cuando creamos clases debemos evitar usar nombres de clases propias del api de java o javax ext.. Esto para evitar posibles conflictos y resultados inesperados. Lo lógico al crear una clase Vector en vez de importarla, es que nuestra intención sea cambiar o modificar algo en esta nueva clase Vector pero con referencia a la clase "original" Vector del package util, y eso es justamente lo que esta generando un error de lógica, o resultado inesperado en este ejercicio.

Si consultas el método isEmpty (esta vacío) de la ruta java.util.Vector; encontraras el siguiente detalle:
Citar
retorna verdadero si y sólo si este vector no tiene componentes, es decir, su tamaño es cero; false en caso contrario.

En tu clase Vector tenemos una variable int val = 1, que se usa para mediante un condicional if, comparar el tamaño del vector, osea si esta vacío o si contiene elemento/s, también encontramos una linea de comentario que dice:
Citar
// compares with 1 instead of 0
(compara con 1 en vez de 0), aclarando que lo correcto seria inicializar la variable "val" a 0, pero que aun estando inicializada a 1 se debe corregir el error lógico.

Debes usar la lógica cuando analizas este fragmento de codigo:
Código: [Seleccionar]
private int val = 1;   
      public boolean isEmpty() {
        if (val == 1) {   // compares with 1 instead of 0
          return true;
        } else {
          return false;
        }
      }
Yo lo interpreto así:

Situación ilógica: Si val (tamaño del Vector) es igual a 1 return true
(el vector esta vacío!) si no return false (el vector contiene elemento/s).

Para solucionar el error lógico, pues aplicamos la lógica.

Situación lógica: Si val (tamaño del Vector) es igual a 1 return "false" (el vector contiene elemento/s)
si no return "true" (el Vector esta vacío!).

A continuación te dejo un ejemplo de como rediseñaria yo tu ejercicio:
Código: [Seleccionar]
// import java.util.Vector; omitted
public class VectorUser
{
  public static void main(String[] args)
  {
    Vector v = new Vector();
    if (v.isEmpty())
    {
      System.out.println("Vector is empty");
    }
    else {System.out.println("Vector is NOT empty");
    }
  }
  private static class Vector //La declaración de esta clase pasa a estar dentro de la clase VectorUser.
  {
      private int val = 1;   
      public boolean isEmpty() {
        if (val == 1) {   // compares with 1 instead of 0
          return false;//anteriormente valía true
        } else {
          return true;//anteriormente valía false
        }
      }
      // other functionality is same as java.util.Vector
  }
}
Espero a ver sido bien explicito. Cualquier duda no dudes en comentar.

Saludos!

118
Aprender a programar desde cero / Re:(CU00640B)
« en: 30 de Septiembre 2014, 16:56 »
 Hola Alex!

Consejo personal: primero declara el constructor general (Constructor sin parámetros) y luego el constructor con parámetros (o los constructores con parámetros de ser mas se uno)

En tu ejercicio, All is ok!!  ;) Puedes continuar avanzando.

Saludos!

119
Aprender a programar desde cero / Re:ejercicio java
« en: 30 de Septiembre 2014, 16:38 »
 Me alegro que te aya sido util Susana83, aprovecho para corregir algo que dije en esta ultima explicación:
Citar
para corregir esto usamos el método iterator de la clase Iterator
Corrección: El metodo iterator(); es un método del cual disponen las clases tipo colección, tales como List, ArrayList, CopyOnWriteArrayList, entre otras. Cuando se invoca este método sobre una colección de cuyo tipo es una colección que admita iterator(); pues el resultado es que este devuelve un tipo Iterator, y desde ese Iterator pues podemos usar los métodos disponibles para Iterator, hasNext(); next(); remove(); ext...

Espero no causarte confusión, mis disculpas por referir el método iterator(); como un método propio de la clase Iterator (incorrecto) ;D

Saludos!

120
 Hola Guille!
Te comento: Cuando vayas a introducir código en el foro antes presiona
el botón # (insertar código) que se encuentra arriba del campo de escritura, te saldrán unas etiquetas similares a estas: [cod][/cod]  y a continuación procede a pegar el código de tu clase en medio de esas etiquetas.
Ejemp: [cod]aquíElCódigoDeTuClase(){...}[/cod]. Tu has usado las etiquetas para "insertar cita" cuya finalidad es otra.

En cuanto al ejercicio te cito un fragmento de lo que pide el enunciado del ejercicio y seguido, otro fragmento de texto que ha escrito toni_apr en otro hilo sobre como inicializar variables  y que es apropiado para la ocasión.

El ejercicio pide:
Citar
Define un constructor asignando unos valores de defecto a los atributos y los métodos para poder establecer y obtener los valores de los atributos.

toni_apr comenta:
Citar
Asignar los valores por defecto a los atributos de la clase, es esto:
Atributos de tipo String se inicializan con cadena vacía
nombre= "";
Atributos de tipo int, se inicalizan a cero
edad = 0;
Atributos de tipo float,se inicalizan a cero
sujperficie = 0.0f;
(la f obliga al compilador a tomar el valor como float, sino lo tomaría como double)
Atributos de tipo double, se inicalizan a cero
distancia = 0.0;
Atributos de tipo boolean, se inicializan a false
casado = false;

También es favorable cambiar el nombre de tu método gettipo() por getTipo();

Sobre tu duda:
Citar
Aqui pongo este. Pero aun tengo dudas de cual es la diferencia de usar private String Algo() y private void Algo()

Te sugiero que repases la entrega CU00624B: https://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=430:metodos-en-java-tipo-procedimiento-void-y-tipo-funcion-return-definicion-invocacion-cu00624b&catid=68:curso-aprender-programacion-java-desde-cero&Itemid=188 Que trata sobre métodos tipo funcion (private String Algo()) y metodos tipo procedimiento (private void Algo()) y que por cierto lo correcto seria declarar "public" String Algo() y "public" void Algo().

Una vez que repases la entrega CU00624B y teniendo en cuenta estos detalles, considero que puedes continuar avanzando en el curso, pero reforzando estos puntos en futuros ejercicios.

Saludos!

Páginas: 1 2 3 4 5 [6] 7 8 9 10 11 ... 13

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