我有
String[] x1 = new String[] { "05:30", "07:20", "13:30", "21:30"};
String[] x2 = new String[] { "08:30", "01:20"};
String[] x3 = new String[] { "12:30", "00:20", "13:54"};
从数据库中我收到x1或x2或x3名称。
String get_x = null;
Cursor cursor = db.rawQuery(selectQuery, null);
if (cursor.moveToFirst()) {
do {
get_x = cursor.getString(0); // get_x will have value x1 or x2 or x3
} while (cursor.moveToNext());
}
然后我想获得返回x [1或2或3]的大小 例如。 int size = x1.length,其中x1是get_x string的值。
我试过
int size = get_x.length;
但没有工作。 'size'将等于get_x的长度,而不是x1.length的长度
答案 0 :(得分:1)
听起来您需要为您的程序使用更合适的数据结构。您有几种选择:
int
值(例如1,2或3),而不是String
(例如"x1"
,"x2"
,{{1} })并使用数组或"x3"
而不是三个单独的变量。数据库中的List
值将作为数组的索引或int
。List
而不是三个不同的变量。现在,您可以使用数据库中的值作为Map
。以下有关Stack Overflow的问题与您的问题有关:
答案 1 :(得分:0)
以下是使用反射:)的答案。 将get_x传递给方法。 " YourClassName" - 是您的活动的名称(或托管您的代码的类),替换它。
public void getSize(String arrayParamName){
Field[] fields = YourClassName.class.getDeclaredFields();
for (Field field : fields) {
//gives the names of the fields
if(field.getName().equals(arrayParamName)) {
System.out.println(field.getName());
try {
String[] returnedArrayFromDB = (String[])field.get(CameraActivity.this);
System.out.println("length of " +field.getName() + ": "+ returnedArrayFromDB.length);
System.out.println("first value of array " +returnedArrayFromDB[0]);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
}