Autor Tema: cannot assing a value to final variable error Java constante no modific CU00673B  (Leído 2659 veces)

@mayakoski

  • Sin experiencia
  • *
  • Mensajes: 43
    • Ver Perfil
En relación al ejercicio CU00673B del curso básico de fundamentos de programación orientada a objetos de aprenderaprogramar, esta sería mi respuesta.

Código: [Seleccionar]
package com.aprenderaprogramar;
import java.lang.Math;

public class Circulo {
private double radio;
private static final double numeroPi = 3.1416;

public Circulo() {
setRadio(0);
}

public double AreaCirculo() {
double areaCirculo = numeroPi*Math.pow(getRadio(), 2);
return areaCirculo;

}

public double LongitudCirculo() {
double longitudCirculo = 2 * numeroPi * getRadio() ;
return longitudCirculo;
}

public double getRadio() {
return radio;
}

public void setRadio(double radio) {
this.radio = radio;
}
}


Código: [Seleccionar]
package com.aprenderaprogramar;

public class TestCirculo {
public static void main(String[] args) {
GestionarEntrada radio;
System.out.println("Ingrese el radio del circulo");
radio = new GestionarEntrada();

Circulo miCirculo = new Circulo();
miCirculo.setRadio(Double.parseDouble(radio.getEntrada()));

System.out.println("Imprimo el radio " + miCirculo.getRadio());

System.out.println("El Area del Circulo es " + miCirculo.AreaCirculo());

System.out.println("La longitud del Circulo es " + miCirculo.LongitudCirculo());

}
}


Código: [Seleccionar]
package com.aprenderaprogramar;

import java.util.Scanner;

public class GestionarEntrada {
private String entrada;

public GestionarEntrada() {
pedirEntrada();
//getEntrada();
}

public void pedirEntrada() {
Scanner entradaTeclado1 = new Scanner(System.in);
setEntrada(entradaTeclado1.nextLine());
}

public String getEntrada() {
System.out.println(entrada);
return entrada;
}

public void setEntrada(String entrada) {
this.entrada = entrada;
}
}



Con respecto a la pregunta ¿Es posible crear un método en la clase Circulo para establecer el valor de numeroPi?; se puede crear pero considero que no es necesario desarrollar código para definir un valor que puede estar en una constante, ademas que en Math.PI ya tenemos definida la constante y podriamos usarla directamente.
« Última modificación: 16 de Octubre 2020, 18:19 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Hola, sobre este ejercicio, referir lo siguiente.

Los nombres de métodos por convenio suelen empezar por minúsculas y describir lo que hace el método, por ejemplo en vez de public double LongitudCirculo() usaríamos public double getLongitudCirculo() ó public double obtenerLongitudCirculo()

La respuesta a la pregunta ¿Es posible crear un método en la clase Circulo para establecer el valor de numeroPi? es que no se puede crear un método para establecer el valor de este atributo porque es una constante y el compilador no permite que sea modificado. Si se intenta, por ejemplo public void setPi() { numeroPi = 44;}, nos devuelve un mensaje cannot assing a value to final variable numeroPi

Saludos

 

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