0

誰かが以下のコードを見て、何が悪いのか明らかなことを指摘できますか?空白のままにすると、プログラムはエラーを出し、editTextすべての情報が存在する場合にのみ計算を実行します。現在、テキストが欠落しているとプログラムがクラッシュしますが、これはなぜですか?

EditText editText1, editText2;
double numA, numB, numC;
TextView answer;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.calc);

    editText1 = (EditText) findViewById(R.id.editText1);
    editText2 = (EditText) findViewById(R.id.editText2);
}

public void btnClick(View v)
{
    if(editText1.getText().length()==0)
    {
        editText1.setError("please input text"); 
    }{
        if  (editText2.getText().length()==0)
            {
                editText2.setError("please input text");
            }

    numA = new Double(editText1.getText().toString());
    numB = new Double(editText2.getText().toString());

    numC=(numA + numB); answer.setText(Double.toString(numC));
    }
}}
4

4 に答える 4

0

コードを次のように変更します。

if(TextUtils.isEmpty(editText1.getText()))
{
    editText1.setError("please input text"); 
}
if(TextUtils.isEmpty(editText2.getText()))
{
    editText2.setError("please input text"); 
}

TextUtils.isEmpty(str)を返しますかstr == null || str.length() == 0

于 2012-06-05T17:27:16.420 に答える
0

""問題は、数値(具体的にはdouble)に解析しようとしていることです。空の値をチェックしていますが、エラーを設定しても解析しようとしています。new Double()ステートメントをtry-catchブロックに配置し、無効な入力を解析しようとしたときに発生する例外をキャッチする必要があります。このように、ユーザーがdoubleとして解析できないランダムなテキスト文字列を入力した場合でも安全です。

于 2012-06-05T17:30:03.893 に答える
0

これを試して、

ステートメントをこれらに置き換えるだけで、機能します。

if ((editText1.getText().toString()).equals(null))


if ((editText2.getText().toString()).equals(null))
于 2012-06-05T18:34:46.827 に答える
0

ただやる

if(editText1.getText().toString().equals(null){//your code here}
if(editText2.getText().toString().equals(null){//your code here}
于 2012-06-05T20:30:58.873 に答える