我有 long 类型的变量:hour_6days
,hour_7days
,hour_8days
和hour_13days
。
我有一个字符串数组:
String[] jj = rule.split(del);
其中jj[0]
包含其中一个数字6
或7
或8
或13
。
如何根据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
,那么我将使用长变量的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)
。
答案 0 :(得分: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)));
答案 1 :(得分: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
。