как вы суммируете массив, который объявлен как переключатель в Java?

#java #android #arrays

#java #Android #массивы

Вопрос:

Я новичок в Java и создаю приложение для Android, используя его, я хочу иметь возможность определять, сколько переключателей включено, но не уверен, как наилучшим образом суммировать массив переключателей. В настоящее время у меня есть:

 SS = new Switch[8];
SS[0] = getView().findViewById(R.id.switch1);
SS[1] = getView().findViewById(R.id.switch2);
SS[2] = getView().findViewById(R.id.switch3);
SS[3] = getView().findViewById(R.id.switch4);
SS[4] = getView().findViewById(R.id.switch5);
SS[5] = getView().findViewById(R.id.switch6);
SS[6] = getView().findViewById(R.id.switch7);
SS[7] = getView().findViewById(R.id.switch8);

submit = getView().findViewById(R.id.submitButton);

submit.setOnClickListener(new View.OnClickListener(){
    public void onClick (View v) {
        totalactive= IntStream.of(SS).sum();
  

с массивом «SS», объявленным как глобальный класс.

Спасибо

Комментарии:

1. SS несовместим с IntStream.of() — как вы определяете, включен «переключатель» или «выключен» — есть ли метод, который вы можете вызвать?

2. Я просто подшучивал над тобой, приятель, не обращай на меня внимания 😉

3. Я использую setOnCheckedChangeListener для каждого переключателя, но хочу ограничить, сколько их может включаться одновременно.

Ответ №1:

Внутри onClick используйте for each цикл:

 totalactive = 0;
for (Switch s : SS) {
    if (s.isChecked()) totalactive  ;
}
  

Комментарии:

1. int total = SS.stream().filter(s -> s.IsChecked).count();

2. У массива @DavidZimmerman нет метода stream(), count() возвращает long =)

3. длинный итог = Arrays.stream(SS).filter(s -> s.IsChecked).count();

4. Это решение отлично сработало, спасибо всем за помощь.

Ответ №2:

Все ответы на данный момент великолепны! Но тогда вы также могли бы сделать это старым школьным способом:

 int totalactive = 0;

for(int i = 0; i < SS.length; i  ){
    if(SS[i].isChecked()){
        totalactive  ;
    }
}

//Here's your result:
Log.d("sumTotal", Integer.toString(totalactive));
  

Бьюсь об заклад, это очень легко понять и соотнести. Я надеюсь, что это поможет. Веселого кодирования!

Комментарии:

1. Это очень напоминает C и то, к чему я собирался вернуться, но я выбрал другой просто потому, что он выглядел чище. Я уверен, что это работает так же хорошо, спасибо за совет.