使用给定参数查找数组的索引

时间:2014-03-07 03:36:51

标签: java arrays

我正在研究一个java程序,但我坚持这个特定的部分。此函数假设将数组作为输入并返回输入数组中第一次出现的target的索引,如果未找到则返回-1。该函数假设调用我的contains方法。

含有()

public static boolean contains(int[] input, int target) {
        for(int i = 0; i < input.length; i++){
            if (target == input[i]){

                return true;
            }
        }
        return false;
    }

的indexOf()

public static int indexOf(int[] input, int target) {
        if(contains(input, target) == true){
            return i;
        }
        return -1;
    }

我试图返回我在contains方法中的变量,但是我不知道如何使变量i从contains方法转移到indexof方法而不使它成为构造函数中的public int。谢谢你的帮助。

---------- ---------- EDIT contains方法假设在给定数组中搜索目标值。如果目标值存在于数组中的某个位置,则返回true。如果没有,返回false。如果需要对contains方法进行任何更改,也可以这样做。

4 个答案:

答案 0 :(得分:1)

indexOf应该看起来很像contains。事实上,他们应该从你拥有的东西中切换出来:

public static int indexOf(int[] input, int target) {
        for(int i = 0; i < input.length; i++){
            if (target == input[i]){
                return i;
            }
        }
        return -1;
    }

public static boolean contains(int[] input, int target) {
        if(indexOf(input, target) >= 0){
            return true;
        }
        return false;
    }

答案 1 :(得分:1)

你很有可能倒退了。要么你的导师在作业中写错了,要么你误读或误解了。

contains()方法使用indexOf()方法更有意义。这种方式应该很容易理解。

答案 2 :(得分:1)

唯一有意义的是使用contains()在indexOf()中执行检查,以确保变量存在。

public static boolean contains(int[] input, int target) {
    for(int i = 0; i < input.length; i++){
        if (target == input[i]){
            return true;
        }
    }
    return false;
}

public static int indexOf(int[] input, int target) {

    //If the value isn't there, return -1
    if(contains(input, target) == false){
        return -1;
    }

    //Go find the value if we know it is in there
    for(int i = 0; i < input.length; i++){
        if (target == input[i]){
            return i;
        }
    } 
    //We should never get here
    return -1;   
}

答案 3 :(得分:0)

另一种方法是将static变量设置为等于目标索引。 code如下所示:

import java.util.*;
import java.lang.*;
import java.io.*;


class TargetSearch
{
private static int posOfTarget;
public static void main (String[] args) throws java.lang.Exception
{
    int [] arr = {1,2,3,4,5,6};
    int target = 5;
    if(contains(arr,target)){
        System.out.println(target+" found at pos " + getPosOfTarget()+1);
    }
    else
        System.out.println(target+" doesn't exist in arr ");
}

public static boolean contains(int[] input, int target) {
for(int i = 0; i < input.length; i++){
    if (target == input[i]){
        setPosofTarget(i);
        return true;
    }
}
return false;
}

public static int indexOf(int[] input, int target) {
    if(contains(input, target) == true){
        //pos is already set in contains()
        return (getPosOfTarget());
    }
    else
        return -1;   
}

//getter setter of pos
public static int getPosOfTarget(){
    return posOfTarget;
};
public static void setPosofTarget(int i){
    posOfTarget = i;
};

}