Autor Tema: Duda inicios con Java Intellij IDEA el programa no reconoce palabra configuració  (Leído 447 veces)

Aprendiz89

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 3
    • Ver Perfil
Buenas noches. Estoy empezando con la programación, haciendo algunos cursos, practicando... Y hay un par de cosas que se me atraviesan... Y a priori no son precisamente las más complicadas.

- Cuando el programa no reconoce una palabra (veo los cursos y veo que por defecto a ell@s sí se las reconocen), y no sé si es que tengo algo mal configurado (está en inglés, y me cuesta un poco), pero me marca error.

- Y en casos como este, que no sé como hacer para que me de el valor correcto, en lugar de este tipo de resultados. No sé que más probar a cambiar en el ejercicio para que de el resultado correcto.

A ver si alguien me puede ayudar a resolver este tipo de casos.

Mi código:

Código: [Seleccionar]
public class Main {

public static void main(String[] args) {
persona persona1 = new persona (juan: "Juan");
System.out.println(persona1);
}

private static class persona {

public persona (String juan) {}
}

}


Gracias. Saludos.
« Última modificación: 12 de Enero 2022, 20:45 por Ogramar »

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 737
    • Ver Perfil
Re: Duda inicios con Java (Intellij IDEA)
« Respuesta #1 en: 20 de Mayo 2021, 11:30 »
Lo que ocurre es que le estás pidiendo al System.out.println() que te imprima en pantalla el objeto persona (por cierto, por convención, los nombres de las clases deberían empezar con mayúscula: Persona)

Pero tu clase Persona, no tiene ningún atributo. Al construirlo le estás dando un nombre, pero ese nombre no lo estás recogiendo, así que aunque se lo des, este no se guarda ni se hace nada con él.

Escribe la clase de la siguiente forma.
- Dándole un atributo (una variable) para guardar el nombre. Como un nombre es un texto, usaremos la clase String para este atributo.

- El nombre que se recibe por el constructor (a través de otro String), lo guardamos en ese atributo.

- Para luego poder obtener ese nombre y mostrarlo en pantalla, se usa un método GET.
Un método GET lo que hace es retornar el valor de un atributo. Si el atributo es un String, hay que declarar este método también como String.
Este valor que pedimos retornar con la sentencia return, será lo que recogerá la instrucción System.out.println() y lo mostrará en pantalla.

- Para poder modificar el nombre una vez creado el objeto Persona, se un método SET.
Un método set lo que hace es recibir un nuevo valor y asignárselo al atributo correspondiente.
Este método NO RETORNA NADA, por tanto, hay que declararlo como void, que significa "nada", es decir, no hay un valor de retorno.

TE dejo un ejemplo con la clase y un código de prueba:
Código: [Seleccionar]
public class Main {

public static void main(String[] args) {

//Creamos una Persona
Persona pers1 = new Persona("Kabuto");
//Mostramos el nombre, solicitándolo a su método GET
System.out.println(pers1.getNombre());

//Cambiamos el nombre por otro, mediante el método SET
pers1.setNombre("Aprendiz89");
//Volvemos a mostrar el nombre cambiado
System.out.println("-- Nombre ha sido modificado --");
System.out.println(pers1.getNombre());


}

private static class Persona {

private String nombre; //Atributo, un String para guarda cadena texto

public Persona(String nombrePersona) {

nombre = nombrePersona; //El valor recibido en el constructor, lo pasamos al atributo
}

/*
* A continuación métodos get y set.
* Los métodos get sirven para obtener el valor de un atributo
* Los métodos set sirven para modificar el valor de un atributo
*/
public String getNombre() {
return nombre; //Retornamos el valor del atributo nombre
}

public void setNombre(String nuevoNombre) {
nombre = nuevoNombre; //Modificamos el nombre actual con otro
}
}

}
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 737
    • Ver Perfil
Re: Duda inicios con Java (Intellij IDEA)
« Respuesta #2 en: 20 de Mayo 2021, 11:39 »
- Cuando el programa no reconoce una palabra (veo los cursos y veo que por defecto a ell@s sí se las reconocen), y no sé si es que tengo algo mal configurado (está en inglés, y me cuesta un poco), pero me marca error.

Sobre esto, habría que ver un caso concreto para ver de que se trata.

Algunas instrucciones Java, para poder usarlas, hay que "importar" la clase a la que pertenecen.
Pero si estás comenzando por lo básico, no creo que te estés encontrando todavía con instrucciones que requieran ser importadas.
Aunque no tardarás mucho, pues importar clases es lo más habitual.

De todos modos, cuando esto ocurre, los IDE's como IntelliJ son capaces de añadir por sí solos la línea de código necesaria para importar las clases necesarias.


Pero como digo, habría que ver caso por caso, para ver cuál es el problema real.

Un saludo
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

Aprendiz89

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 3
    • Ver Perfil
Re: Duda inicios con Java (Intellij IDEA)
« Respuesta #3 en: 20 de Mayo 2021, 18:42 »
Muchísimas gracias por tomarse el tiempo en mirarlo y responder (es algo que no hace cualquiera :D :D :D) Ya algo ha mejorado la cosa, o eso creo, ahora me arroja null como resultado. Debe ser algún error a la hora de declarar los nombres. El término "nombre" lo tuve que declarar como objeto porque me daba error al escribirlo, no sé si es normal. Gracias. Saludos.
« Última modificación: 12 de Enero 2022, 20:46 por Ogramar »

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 737
    • Ver Perfil
Re: Duda inicios con Java (Intellij IDEA)
« Respuesta #4 en: 21 de Mayo 2021, 00:29 »
Vamos a aclarar conceptos.

Cuando a la clase Persona, le pones este atributo:

Código: [Seleccionar]
private String karla;
¡¡Ojo cuidaoo!! Eso no implica que a esa Persona le estés asignando el nombre "karla".
Eso lo que implica es que has creado un atributo llamado "karla".

Insisto, karla es el nombre de la variable que declaras como atributo.
No es el nombre de la Persona que queremos representar.

Lo mismo con el otro atributo llamado "juan".

Te devuelve null porque los nombres que "seteas", los introduces en la variable/atributo llamada "nombre", que es la correcta, la única que deberías estar usando y no se por qué has necesitado declararla como Object.

Como decía, "seteas" los nombres, en "nombre". Eso es correcto.
Pero tu método get, el que retorna el valor del nombre, haces que retorne el valor del atributo llamado "juan". Este atributo en ningún momento ha recibido previamente ningún valor, así que su valor es nulo. Por eso devuelve null

Insisto que aunque a los atributos los llames, "juan", "karla" o "pepe"... eso no implica que dentro tengan esos nombres de personas.
Todos ellos comienzan con valor null. Y si no reciben nada por el constructor de la clase, o por sus correspondientes métodos SET, seguirán teniendo valor null.



En definitiva, una clase que modela una Persona, no debe tener atributos bautizados con nombres reales de personas, porque eso no implica que esos vayan a ser los nombres de ese objeto Persona

Los nombres de los atributos, han de hacer referencia a los aspectos que queremos modelar de una determinada entidad.

Por ejemplo, los atributos habituales de una Persona podrían ser nombre, edad, teléfono, peso, género, altura, color de ojos....

A esta clase Persona podemos darle dos constructores (o tres, o cuatro, o cincuenta..., tantos como creamos necesarios).

Uno es un constructor "vacío", que no recibe ningún valor al construir el objeto.
En este caso conviene dar un valor inicial a los atributos, aunque sean cadenas vacías y valor 0 para los datos numéricos, precisamente para evitar valores null como te estaba pasando.

Y otro constructor que sí reciba directamente unos valores para asignárselos a los atributos.

Te dejo un ejemplo con una clase Persona con varios atributos y en el main se crean dos objetos Persona, uno con el constructor SIN parámetros (valores) y otro con el constructor CON parámetros.

Y a continuación se muestran todos los datos de estas Personas, mediante los métodos GET de cada atributo.
Espero que con este ejemplo, entiendas mejor cuál es la función de los atributos, como usarlos y como nombrarlos:

Código: [Seleccionar]
public class Main {

public static void main(String[] args) {

//Creamos una Persona sin dar valores al constructor
Persona persona1 = new Persona();

//Otra Persona, dando valores al constructor
Persona persona2 = new Persona("Juan", 23, "Masculino", "74698762R", "646508723",
"juanito@aprenderaprogramar.com", "Azules", "Castaño", 65.8, 1.78);

//Mostramos valores
System.out.println("Datos de la Persona construida SIN valores:");
System.out.println("Nombre: " + persona1.getNombre());
System.out.println("Edad: " + persona1.getEdad());
System.out.println("Genero: " + persona1.getGenero());
System.out.println("DNI: " + persona1.getDni());
System.out.println("Telefono: " + persona1.getTelefono());
System.out.println("Email: " + persona1.getEmail());
System.out.println("Color de Ojos: " + persona1.getColorOjos());
System.out.println("Color del Pelo: " + persona1.getColorPelo());
System.out.println("Peso: " + persona1.getPeso() + "Kg");
System.out.println("Altura: " + persona1.getAltura() + "m");

System.out.println("\n"); //Salto de línea

System.out.println("Datos de la Persona construida CON valores:");
System.out.println("Nombre: " + persona2.getNombre());
System.out.println("Edad: " + persona2.getEdad());
System.out.println("Genero: " + persona2.getGenero());
System.out.println("DNI: " + persona2.getDni());
System.out.println("Telefono: " + persona2.getTelefono());
System.out.println("Email: " + persona2.getEmail());
System.out.println("Color de Ojos: " + persona2.getColorOjos());
System.out.println("Color del Pelo: " + persona2.getColorPelo());
System.out.println("Peso: " + persona2.getPeso() + "Kg");
System.out.println("Altura: " + persona2.getAltura() + "m");

}

private static class Persona {

private String nombre;
private int edad;
private String genero;
private String dni;
private String telefono;
private String email;
private String colorOjos;
private String colorPelo;
private double peso;
private double altura;

//Constructor sin parámetros, la Persona se construye sin atributos definidos
public Persona() {
//Para evitar valores null, inicializamos los atributos con valores por defecto
nombre = "";
edad = 0;
genero = "";
dni = "";
telefono = "";
email = "";
colorOjos = "";
colorPelo = "";
peso = 0.0;
altura = 0.0;
}


//Constructor que recibirá los datos necesarios para rellenar los atributos
public Persona(String nombrePer, int edadPer, String generoPer, String dniPer,
String telefonoPer, String emailPer, String colorOjosPer,
String colorPeloPer, double pesoPer, double alturaPer) {
nombre = nombrePer;
edad = edadPer;
genero = generoPer;
dni = dniPer;
telefono = telefonoPer;
email = emailPer;
colorOjos = colorOjosPer;
colorPelo = colorPeloPer;
peso = pesoPer;
altura = alturaPer;
}


public String getNombre() {
return nombre;
}


public void setNombre(String nombrePer) {
nombre = nombrePer;
}


public int getEdad() {
return edad;
}


public void setEdad(int edadPer) {
edad = edadPer;
}


public String getGenero() {
return genero;
}


public void setGenero(String generoPer) {
genero = generoPer;
}


public String getDni() {
return dni;
}


public void setDni(String dniPer) {
dni = dniPer;
}


public String getTelefono() {
return telefono;
}


public void setTelefono(String telefonoPer) {
telefono = telefonoPer;
}


public String getEmail() {
return email;
}


public void setEmail(String emailPer) {
email = emailPer;
}


public String getColorOjos() {
return colorOjos;
}


public void setColorOjos(String colorOjosPer) {
colorOjos = colorOjosPer;
}


public String getColorPelo() {
return colorPelo;
}


public void setColorPelo(String colorPeloPer) {
colorPelo = colorPeloPer;
}


public double getPeso() {
return peso;
}


public void setPeso(double pesoPer) {
peso = pesoPer;
}


public double getAltura() {
return altura;
}


public void setAltura(double alturaPer) {
altura = alturaPer;
}

}

}
« Última modificación: 21 de Mayo 2021, 00:30 por Kabuto »
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

Aprendiz89

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 3
    • Ver Perfil
Re: Duda inicios con Java (Intellij IDEA)
« Respuesta #5 en: 21 de Mayo 2021, 15:51 »
 Muchísimas gracias ;D ;D ;D Por fin, salí del atasco, y gracias a usted  :)

 

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