尝试创建一种方法来检查数组是否仅包含 1 或 4
Trying to create a method to check if array contains only a 1 or 4
static boolean checkNum(int[] array) {
boolean bool = true;
for (int i = 0; i < array.length; i++) {
if (array[i] != 1 || array[i] != 4) {
return !bool;
}
i++;
}
return bool;
}
我尝试了几种编码方式,但都没有成功。我应该怎么做?它只需要遍历数组并找到任何不是 1 或 4 的东西,否则它应该是真的。
您只检查每个第二个元素,因为您递增 i
两次。
删除此行:i++;
您已经在此处的 for 循环中递增 i
:for(int i = 0; i < array.length; i++){
您的代码有两个问题:
array[i] != 1 || array[i] !=4
将 始终 计算为 true
。任何数字要么不为 1,要么不为 4。
您正在查找条件 array[i] != 1 && array[i] !=4
,它表示“数字不是 1 并且 不是 4”。另一个有效的替代方法是 !(array[i] == 1 || array[i] == 4)
,它表示“该数字不是 或 1 或 4”。最终选择哪一个取决于您的个人喜好。
正如其他人指出的那样,循环内的 i++
是多余的,并且使循环跳过第二个元素。
此版本应该可以解决您的问题:
static boolean checkNum(int[] array) {
for (int i = 0; i < array.length; i++) {
if (array[i] != 1 && array[i] != 4) {
return false;
}
}
return true;
}
你知道如何另外删除变量 bool
吗?
好处: 如果你使用 forEach 循环而不是 for 循环,那就更清楚了:
static boolean checkNum(int[] array) {
for (int i : array) {
if (i != 1 && i != 4) {
return false;
}
}
return true;
}
if(数组[i] != 1 && 数组[i] !=4){
要么
如果(!(数组[i] = 1 || 数组[i] =4)){
您已经设法将两个正确的测试混为一谈,并产生了一个不可行的测试。很容易做到,所以总是检查你的复杂布尔表达式。
祝你好运:)
逻辑上,如果当前位置的值不是 1 并且 不是 4 那么 return false。
static boolean checkNum(int[] array){
for(int i = 0; i < array.length; i++){
if(array[i] != 1 && array[i] != 4){
return false;
}
}
return true;
}
我也会推荐for-each
loop喜欢
static boolean checkNum(int[] array){
for(int val : array){
if (val != 1 && val != 4){
return false;
}
}
return true;
}
static boolean checkNum(int[] array) {
boolean bool = true;
for (int i = 0; i < array.length; i++) {
if (array[i] != 1 || array[i] != 4) {
return !bool;
}
i++;
}
return bool;
}
我尝试了几种编码方式,但都没有成功。我应该怎么做?它只需要遍历数组并找到任何不是 1 或 4 的东西,否则它应该是真的。
您只检查每个第二个元素,因为您递增 i
两次。
删除此行:i++;
您已经在此处的 for 循环中递增 i
:for(int i = 0; i < array.length; i++){
您的代码有两个问题:
array[i] != 1 || array[i] !=4
将 始终 计算为true
。任何数字要么不为 1,要么不为 4。您正在查找条件
array[i] != 1 && array[i] !=4
,它表示“数字不是 1 并且 不是 4”。另一个有效的替代方法是!(array[i] == 1 || array[i] == 4)
,它表示“该数字不是 或 1 或 4”。最终选择哪一个取决于您的个人喜好。正如其他人指出的那样,循环内的
i++
是多余的,并且使循环跳过第二个元素。
此版本应该可以解决您的问题:
static boolean checkNum(int[] array) {
for (int i = 0; i < array.length; i++) {
if (array[i] != 1 && array[i] != 4) {
return false;
}
}
return true;
}
你知道如何另外删除变量 bool
吗?
好处: 如果你使用 forEach 循环而不是 for 循环,那就更清楚了:
static boolean checkNum(int[] array) {
for (int i : array) {
if (i != 1 && i != 4) {
return false;
}
}
return true;
}
if(数组[i] != 1 && 数组[i] !=4){ 要么 如果(!(数组[i] = 1 || 数组[i] =4)){
您已经设法将两个正确的测试混为一谈,并产生了一个不可行的测试。很容易做到,所以总是检查你的复杂布尔表达式。
祝你好运:)
逻辑上,如果当前位置的值不是 1 并且 不是 4 那么 return false。
static boolean checkNum(int[] array){
for(int i = 0; i < array.length; i++){
if(array[i] != 1 && array[i] != 4){
return false;
}
}
return true;
}
我也会推荐for-each
loop喜欢
static boolean checkNum(int[] array){
for(int val : array){
if (val != 1 && val != 4){
return false;
}
}
return true;
}