在数组a中查找某数值,若找到则返回该数值所在的下标,若不在则返回提示信息"该数值在数组a中不存在!"。public class HelloJava {
public static void main(String[] args){
int[] arr={1,2,3};
int n=2;
boolean flag=false;
for(int i=0;i<arr.length;i++){
if(n==arr[i])

System.out.println("下标为:"+i);
flag=true;
break;
}
if(!flag)
System.out.println("该数值在数组a中不存在");
}
}
这段代码只有n=1时是正确的,其他情况都无法显示出结果,不知道哪里有问题
还有为什么要定义布尔类型 没明白

解决方案 »

  1.   

    if 里面括号没加public class HelloJava { public static void main(String[] args) {
    int[] arr = { 1, 2, 3 };
    int n = 1;
    boolean flag = false;
    for (int i = 0; i < arr.length; i++) {
    if (n == arr[i]){
    System.out.println("下标为:" + i);
    flag = true;
    break;
    }
    }
    if (!flag)
    System.out.println("该数值在数组a中不存在");
    }
    }
      

  2.   

    public class HelloJava {
    public static void main(String[] args){
    int[] arr={1,2,3};
    int n=2;
    boolean flag=false;
    for(int i=0;i<arr.length;i++){
    if(n==arr[i]){
    System.out.println("下标为:"+i);
    flag=true;
    break;
    }
    }
    if(!flag)
    System.out.println("该数值在数组a中不存在");
    }
    }
      

  3.   

    flag初始值为false,
    当在数组中找到n后,flag变为true,表示n被找到
    如果遍历数组都没有找到n,那么最后flag为false,输出“该数值在数组a中不存在”
      

  4.   

    for(int i=0;i<arr.length;i++){
    if(n==arr[i])
     System.out.println("下标为:"+i);
     flag=true;
     break;
    }
      这里可以看成
       if(n==arr[i]){
      System.out.println("下标为:"+i);
      }
      flag=true;
      break;
      所以当i=1 的时候才能进入sysout
      
    还有为什么要定义布尔类型
      if(!flag)
    System.out.println("该数值在数组a中不存在");
    }
      为了做这个判断的
      

  5.   

    package resource;public class HelloJava {
        public static void main(String[] args) {
    int[] arr = { 1, 2, 3 };
    boolean flag = false;
    for (int i = 0; i < arr.length; i++) {
        if (n == arr[i]) {
    System.out.println("下标为:" + i);
    flag = true;
    break;
        }
    }
    if (!flag)
        System.out.println("该数值在数组a中不存在");
        }
    }
    注意if里面的括号位置,设置flag为布尔类型是代表有没有找到。
      

  6.   

    加一对括号就行了。public class HelloJava
    {
    public static void main(String[] args)
    {
    int[] arr = { 1, 2, 3 };
    int n = 2;
    boolean flag = false;
    for (int i = 0; i < arr.length; i++)
    {
    if (n == arr[i])
    {
    System.out.println("下标为:" + i);
    flag = true;
    break;
    }
    }
    if (!flag)
    System.out.println("该数值在数组a中不存在");
    }
    }
      

  7.   

    用现成的API更简单一点import java.util.Arrays;public class HelloJava
    {
    public static void main(String[] args)
    {
    int[] arr = { 1, 2, 3 };
    int n = 2;
    int index = Arrays.binarySearch(arr, n);
    if(index >= 0)
    System.out.println("下标为:" + index);
    else
    System.out.println("该数值在数组a中不存在");
    }
    }
      

  8.   


    建议了解Arrays和Collections这两个类,封装了很多实用的方法,还有Comparator,在排序中很实用~
      

  9.   

    加上一对括号:
    public class Test {
    public static void main(String[] args){
    int[] arr={1,2,3,2,2,2};
    int n=2;
    boolean flag=false;
    for(int i=0;i<arr.length;i++){
    if(n==arr[i]){
    System.out.println("下标为:"+i);
    flag=true;
    }
    }
    if(!flag){
    System.out.println("该数值在数组a中不存在");
    }
    }
    }这样只要有相同的就会显示。如果你需要找到第一次出现的位置的话就加上break;
      

  10.   

    如果要把数组里面所有相等的下标打印出来,则不能用break了。