public boolean only14(int[] nums) { boolean flag = false; for (int i = 0; i < nums.length; i++) { if (nums[i] == 1 || nums[i] == 4) { flag = true; } else { return false; } } return flag; }
我提出了以下算法,该算法返回所有预期的答案,除了应该返回true
的空数组:
only14([]) → true
从解决方案中,以下输入应该产生true
,但我无法弄清楚原因:
{{1}}
我理解默认值是0,所以我错过了什么,以至于我应该期望布尔值的返回值为{{1}}?
答案 0 :(得分:4)
以下内容应该有效。它返回true
,除非有任何值不是1或4。
public boolean only14(int[] nums) {
for (int i = 0; i < nums.length; i++) {
int val = nums[i];
if (val != 1 && val != 4) {
return false;
}
}
return true;
}
答案 1 :(得分:3)
空集不包含不是1
或4
的值,因此它应该是true
。我更喜欢for-each
loop喜欢
public boolean only14(int[] nums) {
for (int n : nums) { // for each int n in nums
if (n == 1 || n == 4) { // if it is 1 or 4 keep looping
continue;
}
return false; // it isn't 1 or 4, return false
}
return true; // every value is 1 or 4.
}
在Java 8+中,您可以使用IntStream
之类的
public boolean only14(int[] nums) {
return IntStream.of(nums).allMatch(x -> x == 1 || x == 4);
}
答案 2 :(得分:0)
此代码可以正常工作:-
public boolean only14(int[] nums) {
for(int i=0;i<=nums.length-1;i++){
if (nums[i]!= 1 && nums[i]!= 4){
return false;
}
}
return true;
}