在不使用API​​的情况下从数组中搜索数字

时间:2014-10-23 19:18:52

标签: java arrays search

我是Java新手。 这是我为从数组中搜索数字(提示值)而编写的代码。 它找不到匹配号码,但是当我将if(values[i]==number[i])更改为if(values[i]==number[1])

时,它会有效
public static void main(String args[]){

    int[] number = {1, 2, 3, 4, 5, 6, 7, 8, 9};


    //Convert string to int
    int[] values = new int[args.length];
    for (int i = 0; i < args.length; i++) {
        values[i] = Integer.parseInt(args[i]);
    }

    for(int i=0; i<values.length; i++){
        for(int j=0; j<number.length; j++){

            if(values[i]==number[i]){
            //if(values.equals(number[1])){

                System.out.println("Number is found");
            }else{
                System.out.println("Number is not found");
            }

        }

    }
}

2 个答案:

答案 0 :(得分:2)

您需要更改

if(values[i]==number[i])

if(values[i]==number[j])

此外,我会使用一个布尔值,这样你就不会在循环的每次迭代中输出一行,而只是在args中每个值的分析结束时。

最终会像:

boolean found;
for(int i=0; i<values.length; i++){
    found = false;
    for(int j=0; j<number.length; j++){
        if(values[i]==number[j]){
            found = true
        }
    }
    if(found){               
        System.out.println("Number is found");
    } else {
        System.out.println("Number is not found");
    }
}

答案 1 :(得分:1)

由于您在数组value[i]中搜索值number。您正在使用number扫描数组j。试试这个:

public static void main(String []args){
    int[] number = {1, 2, 3, 4, 5};


//Convert string to int
int[] values = new int[args.length];
for (int i = 0; i < args.length; i++) {
    values[i] = Integer.parseInt(args[i]);
}

for(int i=0; i<values.length; i++){
    boolean flag=false;
    for(int j=0; j<number.length; j++){

        if(values[i]==number[j]){
            System.out.println("Number is found");
            flag=true;
            break;  // Since we found number hence move out from inner loop
        }

    }
     if(!flag)
          System.out.println("Number is not found");

    }
 }