0

タイプlongの変数があります: hour_6dayshour_7dayshour_8daysおよびhour_13days

私は文字列配列を持っています:

String[] jj = rule.split(del);

ここには、またはまたは またはのいずれかjj[0]の数字が含まれます。67813

の値に応じて上記の長い変数を変更する方法はjj[0]?

たとえば、割り当ての右側が左側の変数と同等になるように、以下をどのように記述できますか。

hour_6days = "hour_"+jj[0]+"6days"; //this is invalid as hour_6days is of long type.

より明確にするために、

jj[0]が含まれている場合は6、long 変数のhour_6days値を使用します。jj[0]が含まれている場合は7、long 変数のhour_7days値を使用します。

特定の TextView を次のように設定するために使用している値:

TextView tt2 = (TextView) v.findViewById(R.id.th3);

tt2.setText(hour_7days);

アップデート:

複数の条件を回避するために、コードを再利用したいと考えています。前述のように、私が使用している条件と、使用tt2.setText(hour_7days);している他の条件tt2.setText(hour_6days);などがあります。条件を避けてシンプルに使いたいtt2.setText(hour_6_or_7_or_8days)

4

2 に答える 2

1

Mapを使用してみてくださいHashMap

HashMap<Integer, Long> dayValues = new HashMap<Integer, Long>();

dayValues.put(6,  <put long value for 6 days here>);
dayValues.put(7,  <put long value for 7 days here>);
dayValues.put(8,  <put long value for 8 days here>);
dayValues.put(13, <put long value for 13 days here>);

...

tt2.setText(dayValues.get(jj[0]).toString());

これは、 の整数値を使用しjj[0]て対応する文字列値をマップから取得し、 に設定しtt2ます。

于 2013-10-05T10:44:47.497 に答える
1

私があなたを正しく理解していれば、次enumのように使用します。

public enum EHourDay{

    hour_6days(6),  // actually I would use Upper case
    hour_7days(7),
    hour_8days(8),
    hour_13days(13);

    public static EHourDay
    FromIntToEnum(
            int value ) throws Exception
            {
        for ( EHourDay c : EHourDay.values() ) {
            if ( c.mId == value ) {
                return c;
            }
        }

        throw new Exception( new StringBuilder("Illegal EHourDay: ").append(value).toString() );
            }

    public int
    FromEnumToInt() {
        return mId;
    }

    private EHourDay( int id )
    {
        mId = id;
    }

    private int mId;
}

主要

public static void main(String[] args) throws NumberFormatException, Exception {

        String rule = "6 7 8 13";

        String[] jj = rule.split(" ");

        for(String str : jj){
            EHourDay hourDay = EHourDay.FromIntToEnum(Integer.parseInt(str));

            System.out.println(hourDay);
        }

    } 

次のようなものを入力した後:

tt2.setText(EHourDay.FromIntToEnum(Integer.parseInt(str)));
于 2013-10-05T10:30:17.723 に答える