9

入力タイプが数字の編集テキストが3つあり、ボタンが1つあります

編集テキストに入力された値について、2つの条件を確認する必要があります

[完了]ボタンをクリックすると、次のことができるようになります。

----まず、編集テキストが空かどうかを確認します

if ((a.getText().toString().equals("")) || (b.getText().toString().equals("")) || (c.getText().toString().equals("")))
    Toast.makeText(getApplicationContext(), "Don't leave grade points empty",0).show();

---- 2つ目は、入力した値が特定の範囲内にあるかどうかを確認することです

if((a1<5 || a1>10)||(b1<5 || b1>10)||(c1<5 || c1>10))
    Toast.makeText(getApplicationContext(), "Range should be between 15 to 25", 0).show();

a、b、cとa1、b1、c1はどちらも同じ値を表します。私は、a、b、cの値をa1、b1、c1のintに解析しました。

----それでは、elseの部分で、上記の条件に合格すれば、これらの値を使用できるはずです。

else
{
//do something
}

私の問題は、3つのエディットテキストがすべて空のときに、[完了]ボタンをクリックすると[強制終了]エラーが発生するため、どのように機能させるか です。私はそれらをif、else if and elseループに入れようとし、if、 ifandelseループも試しました。

両方の条件を満たさない場合は、どのようにコーディングしてから、elseの部分に進む必要がありますか?

ヘルプ !!:)

4

5 に答える 5

7
if ((a.getText().toString().equals("")) || (b.getText().toString().equals("")) || (c.getText().toString().equals("")))
    Toast.makeText(getApplicationContext(), "Don't leave grade points empty",0).show();
else {
    //Convert your a/b/c.getText() to a1/b1/c1 now you know they are not empty
    if((a1<5 || a1>10)||(b1<5 || b1>10)||(c1<5 || c1>10))
        Toast.makeText(getApplicationContext(), "Range should be between 15 to 25", 0).show();
    else
    {
    //do something
    }
}
于 2012-06-13T19:04:34.260 に答える
2

nullの変数に対してなんらかのチェックを行おうとしているからだと思います。あなたは試すことができます:

if (a.getText() == null || b.getText() == null || c.getText() == null ){
     //Toast code
} else {
    //Convert string to int code
    if ((a1<5 || a1>10) || (b1<5 || b1>10) || (c1<5 || c1>10)){
    //Toast code
    } else {
        //Do something with numbers in the correct range code here
    }
}

logcatの出力を確認することも役立ちます。「Causedby....」という行が表示されます。これは、力を閉じる原因を示しています。

于 2012-06-13T19:12:28.037 に答える
1

私はあなたが他の場合は2番目を作る必要があると思います

if ((a.getText().toString().equals("")) || (b.getText().toString().equals("")) || (c.getText().toString().equals("")))
    Toast.makeText(getApplicationContext(), "Don't leave grade points empty",0).show();
else if((a1<5 || a1>10)||(b1<5 || b1>10)||(c1<5 || c1>10))
    Toast.makeText(getApplicationContext(), "Range should be between 15 to 25", 0).show();
else {
    //logic
}

ちょっと変わった実行の流れですが、これで問題は解決すると思います

于 2012-06-13T19:04:46.100 に答える
1

Androidプログラマーではありませんが、x.getText()がnullを返す場合、.toString()はNullPointerExceptionを生成します。createメソッド:

private static boolean isEmpty(Button button)
{
    if (button != null)
    {
        final String text = button.getText();
        return text != null && text.length() > 0;
    }

    return false;
}

それから:

if (isEmpty(a) || isEmpty(b) || isEmpty(c)
    ......
于 2012-06-13T19:31:39.353 に答える
1

このようにしてください、間違いなく動作します、チェック済み:

 if ((a.getText().toString().equals("")) || (b.getText().toString().equals("")) || (c.getText().toString().equals("")))

  Toast.makeText(getApplicationContext(), "Don't leave grade points empty",0).show();

 else{

if((a1<5 || a1>10)||(b1<5 || b1>10)||(c1<5 || c1>10))
    Toast.makeText(getApplicationContext(), "Range should be between 15 to 25", 0).show();
else
{
//do something
}}
于 2017-01-31T10:21:07.287 に答える