Quiero sacar el 5% de cualquier número y se me ha ocurrido de la siguiente manera:
public class Main4Activity extends AppCompatActivity {
EditText uno;
TextView tres, tresinvisible, multiplica, divide, haciendocuenta, haciendocuenta2;
Button btn1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main4);
uno = (EditText) findViewById(R.id.uno);
tres = (TextView) findViewById(R.id.tres);
tresinvisible = (TextView) findViewById(R.id.tresinvisible);
multiplica = (TextView) findViewById(R.id.multiplica);
divide = (TextView) findViewById(R.id.divide);
haciendocuenta = (TextView) findViewById(R.id.haciendocuenta);
haciendocuenta2 = (TextView) findViewById(R.id.haciendocuenta2);
btn1 = (Button) findViewById(R.id.btn1);
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int aux0 = Integer.valueOf(uno.getText().toString());
int resultado = aux0;
// envio el número a:
tres.setText("" + resultado + " " + "es el resultado final");
tresinvisible.setText("" + resultado);
// aux2 es el número que escribo en mi editText para sacarle el 5%
int aux2 = Integer.valueOf(tresinvisible.getText().toString());
// aux3 es igual a 5
int aux3 = Integer.valueOf(multiplica.getText().toString());
// multiplico aux2 * aux3
int casiresultado1 = aux2 * aux3;
// envio el resultado a:
haciendocuenta.setText("" + casiresultado1);
//
int aux4 = Integer.valueOf(haciendocuenta.getText().toString());
// divide es igual a 100
int aux5 = Integer.valueOf(divide.getText().toString());
// divido aux4 * aux5
int resultadofinal11 = aux4 / aux5;
// envio el resultado a:
haciendocuenta2.setText("" + resultadofinal11);
//
int aux6 = Integer.valueOf(tresinvisible.getText().toString());
int aux7 = Integer.valueOf(haciendocuenta2.getText().toString());
// resto aux6 - aux7
int resultadofinal = aux6 - aux7;
// envio el resultado final a:
tres.setText("" + resultadofinal + " " + "es el resultado final");
}
});
}
}
Imagino que no es de la mejor manera, pero me ha funcionado bien, he dejado notas de como he realizado cada acción para que esté mas claro el código, pero claro ahora viene mi problema. Como podéis ver en mi código el número del que saco el 5% lo escribo en mi EditText
pero si es un número con decimales la aplicación se cierra. ¿Cómo puedo solucionarlo y poder sacar el 5% también de números con decimales?
Gracias! Y si sabéis como podría hacer un código más limpio/corto también os lo agradecería, es como yo he pensado que podía hacerlo pero no sé si es la mejor manera...
El logcat
me marca esto cuando se detiene:
java.lang.NumberFormatException: Invalid int: "570.5"
EDITO1:
public class Main4Activity extends AppCompatActivity {
EditText uno;
TextView tres;
Button btn1;
static final BigDecimal PORCENTAJE_CINCO = new BigDecimal("0.05");
public BigDecimal calculaCincoPorCiento(BigDecimal numero) {
return numero.multiply(PORCENTAJE_CINCO);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main4);
uno = (EditText) findViewById(R.id.uno);
tres = (TextView) findViewById(R.id.tres);
btn1 = (Button) findViewById(R.id.btn1);
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
BigDecimal aux0 = new BigDecimal(uno.getText().toString());
BigDecimal aux1 = new BigDecimal(String.valueOf(calculaCincoPorCiento(PORCENTAJE_CINCO)));
aux1 = aux1.divide(aux0);
tres.setText("" + aux1 + " " + "es el 5%");
}
});
}
}
He intentando sacar así el 5% con decimales, viendo la respuesta de @LuiggiMendoza, pero no me saca el 5%, supongo que lo hago mal. ¿Me podéis ayudar? Gracias!