Вход | Регистрация


Информационные технологии :: Администрирование

Есть ли java кодеры? Почему эта функция возвращает истину?

Есть ли java кодеры? Почему эта функция возвращает истину?
Я
   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;

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


Список тем форума
Рекламное место пустует  Рекламное место пустует
Прочитай, хотя бы, Митичкина "Разработка в системе 1С:Предприятие 8". Волшебник
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует