web-dev-qa-db-ja.com

if elseループで同じデータに複数の条件を使用するにはどうすればよいですか? -Java / android

3 edittexts入力タイプがnumberで、1 buttonDone

edittextsに入力された値について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、c1のa、b、cの値をintに解析しました。

----次に、elseの部分で、上記の条件を満たせば、これらの値を使用できるはずです。

else
{
//do something
}

私の問題は、3つすべてのときに完了ボタンをクリックすると強制終了エラーが発生したときにそれを機能させる方法ですedittextは空です。私はそれらをif、else if and else loopに入れようとしました。また、if、if and else loopも試しました。

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

助けて !! :)

5
kumareloaded
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
    }
}
3
John

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 ....」という行が表示されます。これは、力を閉じる原因を示しています。

2
thomas.cloud

私はあなたが他の場合は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
}

奇妙な実行フローのようなものですが、これで問題が解決すると思います

0
Kevin DiTraglia

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

 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
}}
0
Arjun Singh

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)
    ......
0
Moji