Имя: Пароль:
IT
Админ
Есть ли java кодеры? Почему эта функция возвращает истину?
0 Yrii-ay
 
18.05.18
10:55
Почему код возвращает истину через одно место?)

public boolean sum28(int[] nums) {
  int c=0;
  boolean d=false;
  boolean dd=true;
  for(int i=0; i<nums.length; i++){
  if(nums[i]==2 ){
   c+= 2;
  
  }
    else if(c==8){
    return dd;
  }
  }
  return d;
}
1 Вафель
 
18.05.18
10:57
в какой то момент с == 8
2 Волшебник
 
18.05.18
10:57
boolean d=false;
  boolean dd=true;

быдлокод детектед
3 Buster007
 
18.05.18
10:58
такой г..код не должен работать. Комп должен сразу выключаться при попытке выполниться.
4 Fragster
 
гуру
18.05.18
10:58
зачем так через хуй?
5 Yrii-ay
 
18.05.18
10:59
Вот тут должна быть истина, а возвращает ложь?    
sum28([1, 2, 2, 1, 2, 2]) → true    false    X
6 Вафель
 
18.05.18
11:00
(5) все верно возвращает
7 Fragster
 
гуру
18.05.18
11:00
ну и если прочитать название функции, применить немного телепатии, то можно понять, что оно еще и неправильно работает. что-то типа сумма всех двоек в массиве равна восьми. но функция считает не это.
8 Вафель
 
18.05.18
11:00
по коду с==8, но следующие не должны быть 2ки в массиве
9 Вафель
 
18.05.18
11:01
нужно после цикла проверять
10 Yrii-ay
 
18.05.18
11:02
(2) Я только учусь)
11 Yrii-ay
 
18.05.18
11:02
(9) Спасибо
12 Зуекщмшср
 
18.05.18
11:03
Здесь и быдлокодером не надо быть, функция возвращает true после того, как нашла четыре nums[i]==2, и на следующем шаге возвращает true.
Убери из массива значения, равные 2, вернет false.
И не делай переменные под булево.
13 Beduin
 
18.05.18
11:03
(11)
public boolean sum28(int[] nums) {
  int c=0;
  boolean d=false;
  boolean dd=true;
  for(int i=0; i<nums.length; i++){
  if(nums[i]==2 ){
   c+= 2;
  
  }
   if(c==8){
    return dd;
  }
  }
  return d;
}
14 palladyi
 
18.05.18
11:04
Я бы так сделал
or(int i=0; i<nums.length; i++){
if(c==8){
    return dd;
  }
  if(nums[i]==2 ){
   c+= 2;
  
  }
      
  }
15 Yrii-ay
 
18.05.18
11:05
(12) Понял
16 Fragster
 
гуру
18.05.18
11:05
вот по этому в школе сначала учат рисовать блоксхемы
17 Fragster
 
гуру
18.05.18
11:07
да и даже само название лучше сделать другим, как минимум fourTwosInArray
18 Вафель
 
18.05.18
11:07
(14) не сработает, если 8 будет на последней цифре
19 Волшебник
 
18.05.18
11:08
(16) У java-кодеров другой подход: хуяк-хуяк и в продакшн.
20 Yrii-ay
 
18.05.18
11:08
(13)  А если подать 5 двоек?
21 Вафель
 
18.05.18
11:08
какая постановка задачи?
22 Yrii-ay
 
18.05.18
11:09
(21) Дан массив целых чисел. Создайте Java-метод, который возвращает true в случае, если сумма всех элементов массива со значением 2 равна 8.

Примеры вызова Java-метода и возвращаемый результат:

sum28([2, 3, 2, 2, 4, 2]) → true

sum28([2, 3, 2, 2, 4, 2, 2]) → false

sum28([1, 2, 3, 4]) → false
23 Вафель
 
18.05.18
11:09
(22) ну так проверяй после цикла
24 Адинэснег
 
18.05.18
11:09
(21) пройти алгоритм в голове не заблудившись в двух итерациях цикла
25 Вафель
 
18.05.18
11:10
return (sum == 8)
26 Yrii-ay
 
18.05.18
11:10
(23) Ок
27 Yrii-ay
 
18.05.18
11:10
(25) Точно
29 Fragster
 
гуру
18.05.18
11:14
for(int i=0; i<nums.length && c <= 8 ; i++){
if(nums[i]==2 ){
   c+= 2;
  }
}
  return c == 8;
}
30 Fragster
 
гуру
18.05.18
11:14
ну там со скобочками подразобраться
31 Йохохо
 
18.05.18
11:17
только ИЛИ надо поставить, ошибка на примере 2)
32 palladyi
 
18.05.18
11:24
(18) Согласен((
33 Fragster
 
гуру
18.05.18
11:25
for(int i=0; i<nums.length && c <= 8 ; i++){
  с += nums[i] == 2 ? nums[i] : 0;
}
return c == 8;
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой