Должен использоваться массив только с одним циклом

#arrays

#массивы

Вопрос:

Я попытался решить проблему.Я потратил много времени на это, но я этого не понимаю.

Проблема: учитывая массив целых чисел, верните true, если он не содержит 1 или не содержит 4.

 no14([1, 2, 3]) → true
no14([1, 2, 3, 4]) → false
no14([2, 3, 4]) → true    

  public boolean no14(int[] nums) {

  for(int i=0;i<nums.length;i  )
  {
    if(nums[i]==1 || nums[i]==4)
    return false;

    else 
    return true;
  }

  return false;
}
  

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

1. какой язык программирования? java? Какую ошибку вы получаете? Что не работает?

Ответ №1:

Попробуйте это:

 public boolean no14(int[] nums) {

    boolean containsOne = false;
    boolean containsFour = false;

    for (int i=0; i<nums.length; i  ) {
       if(nums[i] == 1) {
           containsOne = true;
       }
       if(nums[i] == 4) {
           containsFour = true;
       }
    }

    if (!containsOne || !containsFour) {
       return true;
    } else {
       return false;
    }

}
  

(не тестировался, ориентирован на читаемость человеком)

Надеюсь, это сработает!

Ответ №2:

Что вы делаете, так это проверяете, является ли, скажем, первое число в массиве, скажем, 2, тогда вы возвращаете true тогда и там, поскольку ваше условие if не выполняется, и вы возвращаете там истинную форму.

Вместо этого в цикле, если вы обнаружите, что текущий элемент в массиве равен 1 или 4, тогда возвращайте только значение false. Если вы оцениваете каждую запись массива и обнаруживаете, что у вас нет 1 или 4 в массиве, тогда верните true, например:

 for(int i=0;i<nums.length;i  ){
   if(nums[i]==1 || nums[i]==4) {
       return false;
   }
}
return true; 
  

Ответ №3:

Удалите else в цикле и вернитесь true после цикла.

 public boolean no14(int[] nums) {
  for(int i=0;i<nums.length;i  ) {
    if(nums[i]==1 || nums[i]==4) return false;
  }

  return true;
}