Я начинаю программировать на Android, ища советы/конструктивную критику. Я использую приведенный ниже код для создания трехмерного массива из содержимого файла strings.xml. Как только массив был сгенерирован, у меня есть дополнительный код (не прилагается), который выбирает определенное значение из массива и использует его для выполнения некоторых вычислений и отображения результата в текстовом виде. Является ли мой подход хорошим или есть лучший способ достичь моей цели? Заранее спасибо.Трехмерный массив из strings.xml
Вот небольшой образец содержимого strings.xml (существует около 50 строковых массивов с от 4 до примерно 150 элементов, с каждым элементом, содержащего 10 целых чисел или десятичных значения):
<string-array name="state1">
<item>686, 33, 22, 93, 76, 38, 45, 52, 2, 0.55</item>
<item>600, 34, 25, 92, 76, 36, 43, 50, 2, 0.51</item>
<item>774, 33, 28, 91, 74, 28, 35, 42, 2, 0.43</item>
</string-array>
<string-array name="state2">
<item>20, 52, 23, 57, 53, -19, -13, -6, 1, 90</item>
<item>289, 67, -38, 73, 58, -26, -19, -12, 2, 24</item>
<item>2156, 68, -35, 66, 53, -36, -29, -22, 2, 77</item>
<item>131, 61, -4, 68, 57, -19, -12, -6, 1, 14</item>
<item>138, 61, -7, 70, 58, -19, -12, -5, 1, 11</item>
<item>194, 61, -9, 71, 58, -23, -16, -9, 1, 13</item>
<item>342, 61, -13, 71, 58, -20, -14, -7, 2, 13</item>
<item>112, 55, 20, 69, 59, -13, -6, 0, 1, 8</item>
</string-array>
Вот мой MainActivity.java:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Resources res = getResources();
int i, j, k;
float[][][] weatherData = new float[60][200][10];
for (i = 1; i < 3 ; i++)
{
int arrayID = res.getIdentifier("state" + i,"array",getPackageName());
String[] stateData = res.getStringArray(arrayID);
int m = stateData.length;
for (j = 0; j < m ; j++)
{
String[] dataValues = stateData[j].split(",");
int n = dataValues.length;
for (k = 0; k < n; k++)
{
weatherData[i-1][j][k] = Float.parseFloat(dataValues[k]);
}
}
}
Log.v("value", ""+weatherData[1][14][9]);
}
}
если вы используете Java, вы нужно узнать что-то о OO, например, инкапсуляцию ... Это поможет вам сделать ваш код более легким для чтения. – Lucas
Совет по оптимизации: похоже, вы делаете некоторые вычисления на некоторых статических данных. Вместо этого вы можете сохранить результат вычислений, чтобы вам не приходилось повторять его. Вы можете использовать для этого класс java и хранить массивы в качестве констант. –
@KNeerajLal Данные в трехмерном массиве состоят из всех постоянных значений, и активность, которая будет содержать этот код, выберет только одно значение из массива и только один раз. – KJG