Java - 将返回Boolean和索引的int数组

时间:2014-02-18 13:21:52

标签: java arrays boolean

java是否有办法检查指定用户输入的整数数组并返回布尔值以及它所在的索引?我有自己的方式,但我也想知道哪个索引找到了确切的整数

代码片段:

int numUser = Integer.parseInt(inputUser);
boolean ispresent = false;

for(int x = 0; x<=4; x++){
    if(sum[x] == numUser){
        ispresent = true;
    }else{
        ispresent = false;
    }
}

if(ispresent== true){
    System.out.println("The number is in the array");
}else{
    System.out.println("The number is not in the array");
}

6 个答案:

答案 0 :(得分:3)

当它在数组中找不到它时,你可以返回-1。由于数组中没有-1索引,因此可以判断它不会出现在数组中。

如果值确实出现在数组中,则可以返回该索引。因为你总是返回一个int。

答案 1 :(得分:1)

你的问题是非常典型的indexOf()。通常,当找不到元素时返回-1,然后返回索引(大于或等于0)。

您可以通过不同的方式获得该结果。

将数组转换为List

int numUser = Integer.parseInt(inputUser);
int index = Arrays.asList(sum).indexOf(numUser);
if (index < 0) {
    System.out.println("The number is not in the array");
} else {
    System.out.println("The number is in the array: " + index);
}

使用Apache ArrayUtils

int numUser = Integer.parseInt(inputUser);
int index = ArrayUtils.indexOf(sum, numUser);
if (index < 0) {
    System.out.println("The number is not in the array");
} else {
    System.out.println("The number is in the array: " + index);
}

自己写

int numUser = Integer.parseInt(inputUser);
int index = -1;
for (int i = 0; i < sum.length; ++i) {
    if (sum[i] == numUser) {
        index = i;
        break;
    }
}
if (index < 0) {
    System.out.println("The number is not in the array");
} else {
    System.out.println("The number is in the array: " + index);
}

如果您不介意转换为List,我会使用第一种方法(具有最少依赖性的更清晰的代码)。如果您介意并且已经在项目中使用Apache Utils,那么第二种方法就可以了,并避免转换。如果你想保持较少的依赖关系并且对于更复杂的源代码更好,第三种方法可能就是你所追求的!

答案 2 :(得分:0)

您可以使用:

int result = Arrays.asList(array).indexOf(value);
boolean contained = result != -1;

结果为-1意味着该值不在数组中;如果结果&gt; = 0,则它是实际索引。

答案 3 :(得分:0)

使用

int numUser = Integer.parseInt(inputUser);
int indexOfNumUser = Arrays.asList(sum).indexOf(numUser);

如果numUser存在,那么indexOfNumUser包含数组中num的索引。如果不包含-1。

答案 4 :(得分:0)

如果你没有使用它,你也可以尝试用ArrayList替换整数数组。 这将使您的任务更容易解决。

答案 5 :(得分:0)

严格来说,在“标准”Java中,您应该使用之前发布的答案(转换为List并使用indexOf)。 但是如果你想坚持使用数组,请使用ApacheCommons ArrayUtils.indexOf(int[], int)

来自文档:

Returns:
the index of the value within the array, INDEX_NOT_FOUND (-1) if not found or null array input