//Autor Rafael Angel Montero Fernández.
//Fecha Viernes 27 de Abril del 2018.
//Este class contiene el codigo para obtener y convertir porcentajes, muy util en el uso de barras de evolucion.
import javax.swing.JOptionPane;
public class Porcentajes extends Porcientos_padre
{
//Por ejemplo devuelve el 100% del 40% de 70000; el 40% es igual a 28000 y la operacion devuelve 70000.
//porcentaje= Por ejemplo 40, asi tal y como lo escribi aqui.
@Override
public double getCien_por_ciento_de_un_porcentaje(int valor_entero_de_un_porcentaje, int porcentaje)
{
return (valor_entero_de_un_porcentaje/porcentaje) * cien_por_ceinto;
}//getCien_por_ciento_de_un_porcentaje
//Devuelve el valor entero que se desea averiguar de algun porcentaje.
//porcentaje_a_averiguar se puede poner un valor coomo por ejemplo 40 el cual, representara el 40%.
//maximo_valor_decimal= Por ejemplo puede poner 70000 que representa el 100%, o maximo valor.
@Override
public double get_valor_entero_de_un_porcentaje(int porcentaje_a_averiguar, int maximo_valor_decimal)
{
try
{
convertido_en_decimal="0." + porcentaje_a_averiguar;
return maximo_valor_decimal * new Double(convertido_en_decimal);
}catch(Exception ex)
{
JOptionPane.showMessageDialog(null, "Sucedio un erro en get_valor_entero_de_un_porcentaje");
}//catch
return 0.0;//En caso de algun error se retorna esto.
}//valor_entero_de_un_porcentaje
@Override
public double getDiferencia_de_porcentaje_entre_min_y_max(int min, int max, double maximo_valor_decimal)
{
//try
//{
convertido_en_decimal="0." + (max-min);
return maximo_valor_decimal * new Double(convertido_en_decimal);
/*}catch(Exception ex)
{
JOptionPane.showMessageDialog(null, "Sucedio un erro en getDiferencia_de_porcentaje_entre_min_y_max\n" + ex.getMessage());
}//catch
return 0.0;//En caso de algun error se retorna esto. */
}//getDiferencia_de_porcentaje_entre_min_y_max
public static void main(String m[])
{
Porcentajes p =new Porcentajes();
System.out.println("El min y el max de setenta mil: " + p.getDiferencia_de_porcentaje_entre_min_y_max(25, 100, 70000));
System.out.println("El valor entero del 40% de 70000: " + p.get_valor_entero_de_un_porcentaje(40, 70000));
System.out.println("El valor del 100% en enteros usado en 40% de es: " + p.getCien_por_ciento_de_un_porcentaje(28000, 40));
System.out.println("El porcentaje de 28000 de 70000: " + p.getPorcentaje_usado(28000, 70000));
System.exit(0);
}//main
@Override
public double getPorcentaje_usado(int min_valor_entero, int max_valor_entero)
{
double respuesta=0;
respuesta=(new Double(28000)/new Double(70000))*100;//Para evitar errores como el mio en el que los parametros son int y la respuesta es double, se debe usar new Double... o simplemente cambiar los parametros a double.
return respuesta;
}//getPorcentaje_usado
}//Porcentajes
//Clase abstracta para crear sus decendientes.
abstract class Porcientos_padre {
public String convertido_en_decimal = "0.";
public final int cien_por_ceinto = 100;
//Por ejemplo devuelve el 100% del 40% de 70000; el 40% es igual a 28000 y la operacion devuelve 70000.
//porcentaje= Por ejemplo 40, asi tal y como lo escribi aqui.
public abstract double getCien_por_ciento_de_un_porcentaje(int valor_entero_de_un_porcentaje, int porcentaje);
//Devuelve el valor entero que se desea averiguar de algun porcentaje.
//porcentaje_a_averiguar se puede poner un valor coomo por ejemplo 40 el cual, representara el 40%.
//maximo_valor_decimal= Por ejemplo puede poner 70000 que representa el 100%, o maximo valor.
public abstract double get_valor_entero_de_un_porcentaje(int porcentaje_a_averiguar, int maximo_valor_decimal);
public abstract double getDiferencia_de_porcentaje_entre_min_y_max(int min, int max, double maximo_valor_decimal);
public abstract double getPorcentaje_usado(int min_valor_entero, int max_valor_entero);
}//Porcientos_padre
//Esta clase permite cargar los valores en ropiedades y así no tener que usar tantos parametros en las funciones.
class Porcentajes_con_propiedades extends Porcentajes
{
public Porcentajes_con_propiedades()
{
}//Constructor por defecto.
public Porcentajes_con_propiedades(int nuevo_Max_en_enteros, int nuevo_Valor_de_un_porcentaje, int nuevo_Porcentaje_usado)
{
setMax_en_enteros(nuevo_Max_en_enteros);
setValor_de_un_porcentaje(nuevo_Valor_de_un_porcentaje);
setPorcentaje_usado(nuevo_Porcentaje_usado);
}//Constructor con parametros.
private int vMax_en_enteros; //Esta variable puede ser pasada al encavezado del class o quedarse aqui.
public void setMax_en_enteros(int nuevo_Max_en_enteros)
{
/* Es el valor en numeros enteros que representa la maxima cantidad.
El cien por ciento.*/
vMax_en_enteros= nuevo_Max_en_enteros;//Debe escribir un valor aqui.
}//setMax_en_enteros
public int getMax_en_enteros()
{
/*Es el valor en numeros enteros que representa la maxima cantidad.
El cien por ciento.*/
return vMax_en_enteros;
}//getMax_en_enteros
private int vValor_de_un_porcentaje; //Esta variable puede ser pasada al encavezado del class o quedarse aqui.
public void setValor_de_un_porcentaje(int nuevo_Valor_de_un_porcentaje)
{
/* Es el valor en numeros enteros que representa algun porcentaje, por ejemplo el 40%.*/
vValor_de_un_porcentaje= nuevo_Valor_de_un_porcentaje;//Debe escribir un valor aqui.
}//setValor_de_un_porcentaje
public int getValor_de_un_porcentaje()
{
/*Es el valor en numeros enteros que representa algun porcentaje, por ejemplo el 40%.*/
return vValor_de_un_porcentaje;
}//getValor_de_un_porcentaje
private int vPorcentaje_usado; //Esta variable puede ser pasada al encavezado del class o quedarse aqui.
public void setPorcentaje_usado(int nuevo_Porcentaje_usado)
{
/* Es el porciento elegido por el usuario.
Por ejemplo 40.*/
vPorcentaje_usado= nuevo_Porcentaje_usado;//Debe escribir un valor aqui.
}//setPorcentaje_usado
public int getPorcentaje_usado()
{
/*Es el porciento elegido por el usuario.
Por ejemplo 40.*/
return vPorcentaje_usado;
}//getPorcentaje_usado
//Se redifiniran las funciones pero sin los parametros.
public double getCien_por_ciento_de_un_porcentaje()
{
return this.getCien_por_ciento_de_un_porcentaje(this.getValor_de_un_porcentaje(), this.getPorcentaje_usado());
}//getCien_por_ciento_de_un_porcentaje
public double get_valor_entero_de_un_porcentaje()
{
return this.get_valor_entero_de_un_porcentaje(this.getPorcentaje_usado(), this.getMax_en_enteros());
}//get_valor_entero_de_un_porcentaje
}//Porcentajes_con_propiedades
Mil gracias a esta excelente comunidad.