Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: xtc3 en 04 de Abril 2014, 12:06
-
Hola amigos! estoy con un ejercicio que lo que quiero es declarar dos métodos uno con un argumento y otro con el mismo y otro mas, y luego llamar al que tiene dos argumentos, pero me da error y no se por que, les muestro el código a ver si pueden ayudarme.
class persona {
private String nombre;
private String raza; //atributos
//declaracion metodos
public void ponNombre (String elnombre)
{
this.nombre=elnombre;
}
public void ponNombre (String elnombre,String laraza)
{
this.nombre=elnombre;
this.raza=laraza;
}
public static void main(String[] args) { //metodo main entrada al programa
persona persona1 = new persona(); //creamos el objeto
//llamamos al metodo
persona1.ponNombre("Pedro","raza negra");
System.out.println("Los datos obtenidos son :" + persona1.ponNombre());
//AQUI ES DONDE ME DA ERROR CUANDO LLAMO AL METODO
}
}
¿a que puede deberse?
Gracias!!
-
Hola, si te fijas has definido que al método pon nombre se le puede llamar de dos maneras, una es pasándole un String y otro pasándole dos String. Cuando escribes persona1.ponNombre() no le estás pasando ni un String ni dos, sino ninguno.
Además no está bien planteado llamar a este método dentro de System.out.println("Los datos obtenidos son :" + persona1.ponNombre()); porque el método no devuelve un String. Deberías definir un método como public String getRaza() { return raza; } e idem para nombre para poder obtener esos valores como texto ;D
-
Hola, lo que dices tiene mucho sentido y lo se, el método soy consciente de que debería ser getter & setter y no void ya que voy no devuelve nada, pero estoy haciendo el ejercicio en base a un ejemplo de mi profesor pero es que no se aclara ni el, mira voy a copiar el ejemplo de mis apuntes y me comentas que entiendes tu:
public void ponModelo(String modelo) {
this.modelo = modelo;
}
public void ponModelo (String modelo, String color){
this.modelo = modelo;
this.color = color;
}
y luego pone este texto:
Dependiendo de los valores de los argumentos con que se llame al
método ponModelo, se ejecutaría uno u otro de los definidos.
Sin embargo cuando hago:
System.out.println("Los datos obtenidos son :" + persona1.ponNombre("Pedro","raza negra")); por ejemplo me da error aquí y ya no entiendo ni los apuntes ni si están bien o a que se refieren.
De nuevo muchísimas gracias
-
El problema es que en un System.out.println tú solo puedes poner texto para que se muestre por pantalla, y el método al que estás invocando no devuelve un texto, por eso te da error. Para comprender los tipos de métodos y qué es lo que hace un método: 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
-
Ya me olia yo algo de eso, pero entonces puedo afirmar con contundencia que mi profesor no tiene ni p... idea porque el dice que el ejercicio esta bien ¡que le pase argumentos!!! madre mía, en fin, muchas gracias y también por el enlace me va a venir de perlas ;) ;)
-
Dentro de un System.out.println puedes invocar una función y pasarle argumentos, pero sólo si la función te devuelve un String (de modo que es equivalente a que escribieras un texto). No puedes invocar un procedimiento que no te devuelva un String o algo que se pueda convertir en un String...
-
muchisimas gracias!!!