0

すでに設定されているデータを使用して、ユーザーが入力したデータからチェックを行っています。例として、sqlite でのデータ保存は 60-80 です。ユーザー入力が 88 の場合。ユーザー入力 88 をデータ 60-80 でチェックして、適切なアドバイスを得ることができるようにしたい

助けて。

私はこれが好きでした

public String getRangeFromUserInput(int b1, int b2, int b3, int a1, int a2, int a3) {

    if 
       (((70<b1<<100)||(70<b2<<100)||(70<b3<<100))&&((70<a1<<135)||(70<a2<<135)||(70<a3<<135)))
        Toast.makeText(GlucoseAdd.this, "Your glucose level is at normal range", Toast.LENGTH_LONG).show();
    else if 
       (((50<b1<<60)||(50<b2<<60)||(50<b3<<60))&&((135<a1<<180)||(135<a2<<180)||(135<a3<<180)))
        Toast.makeText(GlucoseAdd.this, "You need to start diet. The diet should " +
                "also be low in fat and high in dietary fibre. Regular exercise " +
                "is important in maintaining balanced blood glucose levels.", Toast.LENGTH_LONG).show();
    else if 
        (((b1<50)||(b2<50)||(b3<50))&&((180<a1<<200)||(180<a2<<200)||(180<a3<<200)))
        Toast.makeText(GlucoseAdd.this, "You are in danger state.", Toast.LENGTH_LONG).show();
    return null;
}

しかし、データを入力すると、すべて最初のデータが表示されます..なぜですか?

4

1 に答える 1

0

DB テーブルに保存されているデータは文字列の形式、つまり 60-80 であるため、次のコードを使用して、ユーザー入力値 (例: 88) を 80-100 に変換する必要があります。

public String getRangeFromUserInput(String userInput) {
    return getRangeFromUserInput(Integer.parseInt(userInput));
}

public String getRangeFromUserInput(int userInput) {

    if (userInput >= 60 && userInput < 80)
        return "60-80";
    else if (userInput >= 80 && userInput < 100)
        return "80-100";
    // ...more range checks

    return null;
}

ここで、次のようにクエリの where 句で文字列 (例: 80-100) であるメソッド getRangeFromUserInput() の出力を使用します。

String where = "range = '" + getRangeFromUserInput("88") + "'";

列名がテーブルの範囲であると仮定します。クエリが行を返す場合、次を使用して範囲に対応するアドバイスを読み取ることができます

cursor.getString(cursor.getColumnIndex("advice"))

列名がテーブルのアドバイスであると仮定します。

于 2013-02-28T15:43:15.680 に答える