Я уверен, что это что-то очень простое, но я не смог разобраться в том, что происходит какое-то время.Для цикла, создающего массив с одним меньшим значением, чем ожидалось
У меня есть список, я получаю от общего предпочтения:
// Access the shared preferences to see if the user has saved any alarms yet
SharedPreferences sharedPreferences = context.getSharedPreferences("AppData", Context.MODE_PRIVATE);
String alarmsstring = sharedPreferences.getString("AlarmsStringSP", "None");
// Split the the main alarm string into array of strings values for alarm objects
List<String> alarmObjectsArray = Arrays.asList(alarmsstring.split("\\s*;\\s*"));
проверить размер этого списка, используя:
System.out.println("Testing"+ alarmObjectsArray.size());
И я получаю:
I/System.out: Testing3
Что что я ожидаю, так хорошо.
Затем я создаю новый список массивов и помещаю каждый элемент старого списка в новый, преобразованный в объект.
Как это:
// Iterate through the alarm objects, and place each item into the alarms array
for (int i = 0; i < alarmObjectsArray.size()-1; i++){
// For each of the alarm objects split them into their induvidual items so they can be
// converted back to the correct type.
List<String> alarmItems = Arrays.asList(alarmObjectsArray.get(i).split("\\s*,\\s*"));
Alarm alarm = new Alarm(Integer.parseInt(alarmItems.get(0)),Integer.parseInt(alarmItems.get(1)),
Boolean.parseBoolean(alarmItems.get(2)), Boolean.parseBoolean(alarmItems.get(3)),
Boolean.parseBoolean(alarmItems.get(4)),Boolean.parseBoolean(alarmItems.get(5)),
Boolean.parseBoolean(alarmItems.get(6)), Boolean.parseBoolean(alarmItems.get(7)),
Boolean.parseBoolean(alarmItems.get(8)));
alarms.add(alarm);
}
Единственное, когда он выходит из за петли проверить новый размер массива с:
System.out.println("Testing"+ alarms.size());
И я получаю:
I/System.out: Testing2
Как-то он потерял один, когда он был взят из списка в массив. Я знаю, что в цикле for есть много текста, но я не вижу никакой причины иметь меньше.
возможно из-за 'alarmObjectsArray.size() - 1'? – Blackbelt
'for (int i = 0; i
Eran
'alarmObjectsArray.size() - 1' why used? – PriyankaChauhan