Как вернуть логическое утверждение, если сумма массива меньше или равна максимальному числу? - PullRequest
0 голосов
/ 08 апреля 2020

У меня есть метод head

public boolean legal(int total)

, который должен возвращать true, если сумма ArrayList<Integer> numbers не превышает параметр total.

Пожалуйста, помогите мне о том, как я мог бы реализовать это. Какой тип l oop предпочтительнее?

Спасибо.

Ответы [ 3 ]

0 голосов
/ 08 апреля 2020

Использование Java 8 потоков :

public boolean legal(int total) {
    return numbers.stream()
     .mapToInt(Integer::intValue) // converts the stream to an IntStream object
     .sum() <= total; 
}
0 голосов
/ 08 апреля 2020

Возможно, вам придется реализовать это

int[] arr = new int[] { 1, 2, 3, 4, 5 };

public boolean legal(int total){
    int i=0;
    int sum=0;
    while (i < arr.length) {
       sum += arr[i];
       i=i+1;
    } 
    if(sum <= total){
       return true;
    }
    else{
      return false;
    }
}
0 голосов
/ 08 апреля 2020

Вероятно, самый простой способ сделать l oop через ваш список - использовать foreach l oop

public boolean legal(int total) {

    int sum = 0;
    for(int num : numbers) { //loop through every number in ArrayList numbers
        sum += num;  
    }

    return sum <= total; //return true if the sum is less than or equal to total
}

Foreach l oop проще в использовании, чем a для l oop, так как вы не обрабатываете индессы. Однако foreach l oop может использоваться только в том случае, если в вашей коллекции есть индексы, которые в вашем случае имеют ArrayList. Поэтому foreach l oop - это самый простой способ l oop через ваш список.

Если в вашей коллекции нет индексов (если вы используете, например, Set), вы можете вместо этого использовать обычный для l oop или Итератор .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...