-7

到目前为止我的版本:

boolean isEmpty(int[]arr) {

    for(int i=0; i<arr.length; i++)
        if(arr[i] != 0) {
            return false;
}

    return true; 
}   

我改了,还是不行……那应该怎么写呢?

4

3 回答 3

1

a = 0是错误的,因为a它是一个int数组。您可能正在寻找一个计数器变量。它可能是这样的:

boolean existsData = false;
for(int i=0; i<arr.length; i++)
    //arr[i] = 0 means assign 0 to arr[i]
    //note that I'm using different (!=)
    existsData = (arr[i] != 0);
    if (existsData) {
        break;
    }
}
return existData;

甚至更简单,不使用boolean变量:

for(int i=0; i<arr.length; i++)
    if (arr[i] != 0) {
        return false;
    }
}
return true;

或者,如果您真的是指数组中没有元素,而不是“没有 0 个元素”:

boolean isEmpty(int[] arr) {
  return arr.length == 0; 
}
于 2013-09-25T04:55:05.843 回答
1

aint's 的数组,它本身不是int...

int[]a = new[a.length];

无效,因为a尚未声明...

a=0;

无效,因为sa的数组int不是int本身,它是不同的类型...

if(a[i] = 0)

是一个赋值,意味着你将值赋给0a[i]a数组中的第 n 个位置)

但是,即使比较是正确的,您的方法也不太可能返回有效值......例如......

if(a[i] == 0)
    y=true;
else
    y=false;

如果数组中有两个元素{1, 0},您的方法将返回true,但如果它们有{0, 1},它将返回false...

一旦找到一个不是的值,就0应该break跳出循环并返回适当的响应(false在这种情况下)

你也根本不需要a。您应该使用arr,这是您要检查的实际数组...

我还强烈建议您{...}在块周围使用...它会使阅读您的代码变得更加简单,例如...

for(int i=0; i<a.length; i++) {
    if(a[i] = 0) {
        y=true;
    } else {
        y=false;
    }
}
return y; 

现在很明显该return语句将被调用;)

于 2013-09-25T04:59:50.910 回答
0

在您的代码中存在以下错误:

第 2 行:int[]a = new[a.length]; 你不能在减速之前使用 a.length ......我认为它是 arr.length();

第 3 行:a=0;这里 a 不是变量 ..a 是数组的引用,所以你不能将它的值设置为 0 ...你可以设置为 a[0]=0;,a[1]=0; 或者您可以将其设置为 a=null;

第 5 行:如果(a[i] = 0)

在 if 循环中它只需要布尔值..所以让它 a[i]==0;

于 2013-09-25T05:12:54.383 回答