독자적으로 자바를 연구 중이며 면적을 계산하는 앱을 만들고 있지만 1 자리 숫자를 입력하면 앱에 아무 것도 넣지 않았다고 나와 있습니다. 그러나 십진법과 2 자리수로 작동합니다. 왜 이런 일이 일어나는지 알아낼 수 있습니까? 그 코드입니다 :자바에서 숫자로 텍스트 편집 사용 중 문제
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'와 관련이 있다고 생각합니다. 한 자리 숫자와 함께 사용할 때 라운드가 어떻게 수행되는지 조사하십시오. 부유물이되어야합니까? 테스트 목적으로 다른 유형을 사용할 수 없습니까? 당신이 할 수있는 일은'.0'과 같은 것을 추가하는 것과 같이 파싱하기 전에 한 자리 데이터에 대한 "형식 처리"입니다 ... 모른다. 시도하는 경우입니다. – statosdotcom