#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;
}