私は自分でJavaを勉強していますが、領域を計算するアプリケーションを作成していますが、1桁の数字を入力すると何も入れていません。しかし、それは小数と2桁の数字で動作します。なぜこのことが起こっているのか理解できる人はいませんか?それはコードです: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、どのように "アプリは言う"? logcatでエラーが見つかりましたか?その場合は、スニペットをここに貼り付けてください。おかげで.br – statosdotcom
あなたの問題は 'Float.parseFloat'と関係していると思います。 1桁の数字を使用するときにラウンドがどのように行われたかを調べます。フロートである必要がありますか?テスト目的のために他のタイプを使用することはできませんか?あなたがしていることは、 '.0'のようなものを追加するのと同じように、この解析の前に1桁のデータを"フォーマット処理 "することです。試してみるオプションの場合です。 – statosdotcom