Не уверен, как сформулировать этот вопрос об алгоритме, на самом деле. У меня есть кнопки переключения в приложении для Android, каждая из которых соответствует пронумерованному каналу. Каналы - это (1, n), но идентификаторы кнопок переключения - это некое неизвестное, непоследовательное (для кнопок) целое число. Мне нужно собрать номера каналов и построить командную строку. Мои навыки работы с Java в 1995 году дали мне следующее:
String ch;
int i = 1;
for (ToggleButton toggle : toggles) {
if (toggle.isChecked()) {
ch = String.format("+%d", i+1);
channels = channels.concat(ch);
}
}
Если кнопки-переключатели 1,2,4,5,6,7,11,13,21,22,23,24,25 проверены, этот фрагмент кода успешно возвращает мне строку "+1+2+4+5+6+7+11+13+21+22+23+24+25"
Тем не менее, я хотел бы получить строку "+1/2, +4/7, +11, +13, +21/25"
Интересно, есть ли более простой способ сделать это, чем несколько операторов if:
String ch;
int it = 0;
int last = 1;
for (ToggleButton toggle : toggles ) {
if (toggle.isChecked()) {
if (it == last + 1) {
// somehow continue or note that we're only adding the "/"
} else {
// If we're not the next one, then build the last string
// of "n/last" and then add ", +" to start building next string
}
}
last++;
}
Это похоже на алгоритм "грубой силы", поэтому я не знаю, есть ли более элегантное решение, которое Java может иметь в своем арсенале (или, что более вероятно, I должен иметь)
Спасибо.