我尝试了这个问题。我花了很多时间在这上面,但我没有得到它。
问题:给定一个int数组,如果它不包含1,则返回true或者它不包含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;
}
答案 0 :(得分:0)
你正在做的是,检查数组中的第一个数字是否说2,然后你返回true然后因为你的if条件没有得到满足而你在那里返回true形式。
如果您发现数组中的当前元素是1或4,则返回false,而不是循环。如果你评估数组的每个条目并发现你没有1或4的数组,那么返回如下:
for(int i=0;i<nums.length;i++){
if(nums[i]==1 || nums[i]==4) {
return false;
}
}
return true;
答案 1 :(得分:0)
删除循环中的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;
}
答案 2 :(得分:0)
试试这个:
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;
}
}
(未经测试,专注于人类可读性)
希望它能奏效!