Ich studiere Java auf eigene Faust und ich erstelle eine App, die Bereiche berechnet, aber wenn ich eine 1-stellige Nummer eingeben, sagt die App, dass ich nichts gestellt habe. Aber es funktioniert mit Dezimalzahlen und zweistelligen Zahlen. Kann mir jemand helfen, herauszufinden, warum das passiert? Das ist der Code:Probleme bei der Bearbeitung von Text mit Zahlen in Java
public void calcRetangulo (View view){
EditText compRet = (EditText) findViewById(R.id.compRetangulo);
EditText ladoRet = (EditText) findViewById(R.id.ladoRetangulo);
if (compRet.getText().toString().matches("") || compRet.getText().toString().matches(".") && ladoRet.getText().toString().matches("") || ladoRet.getText().toString().matches(".")){
LayoutInflater er = getLayoutInflater();
View erro = er.inflate(R.layout.erro, null);
erro.findViewById(R.id.ok).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
alertaErro.dismiss();
}
});
AlertDialog.Builder builderErro = new AlertDialog.Builder(this);
builderErro.setView(erro);
alertaErro = builderErro.create();
alertaErro.show();
compRet.setText("");
ladoRet.setText("");
} else{
float comp = Float.parseFloat(compRet.getText().toString());
float lado = Float.parseFloat(ladoRet.getText().toString());
float area = comp * lado;
LayoutInflater li = getLayoutInflater();
View result = li.inflate(R.layout.layout, null);
final TextView resultado = (TextView) result.findViewById(R.id.resultado);
resultado.setText(String.format("A = c x l\nA = "+ comp +" x " + lado +"\nA = "+ area));
result.findViewById(R.id.fechar).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
alertaResult.dismiss();
resultado.setText("");
}
});
AlertDialog.Builder builderResult = new AlertDialog.Builder(this);
builderResult.setView(result);
alertaResult = builderResult.create();
alertaResult.show();
compRet.setText("");
ladoRet.setText("");
}
}
Vini, wie "die App sagt"? Finden Sie Fehler auf dem Logcat? Wenn ja, bitte fügen Sie hier einen Auszug für uns ein. Danke von .br – statosdotcom
Ich denke, dein Problem hat mit 'Float.parseFloat' zu tun. Untersuchen Sie, wie die Runde ausgeführt wird, wenn Sie sie mit einer einstelligen Zahl verwenden. Muss es ein Float sein? Können Sie nicht einen anderen Typ nur zu Testzwecken verwenden? Was Sie tun können, ist eine "Formatbehandlung" für die einstelligen Daten vor diesem Parsing, etwa das Hinzufügen von etwas wie ".0" ... weiß nicht. Es ist der Fall, Optionen zu versuchen. – statosdotcom