黑马程序员技术交流社区

标题: 关于“数组查找”的一点小问题 [打印本页]

作者: 王桂丽    时间: 2012-7-7 21:26
标题: 关于“数组查找”的一点小问题
我编写了一个程序:
class  Texst
{
public static void main(String[] args)
{
  int []arr={4,6,7,9,0,3};
  int DaShu=getDaShu(arr,9);
  System.out.println(DaShu);
}
public static int getDaShu(int[] arr,int x)
{
  for(int y=0,y<arr.length;y++)
  {
   if (arr[y]==arr[x])
   return x;
  }
}
return -1;
}




为什么运行结果总是提示错误:file:///C:/Users/samsung/AppData/Roaming/Tencent/Users/2531988876/QQ/WinTemp/RichOle/3KS%7DRFHKZI%7B]BJO7630K@FF.jpg
这种情况是怎么回事?


作者: 朱东方    时间: 2012-7-7 21:35
  1. class  Text1
  2. {
  3. public static void main(String[] args)
  4. {
  5.   int []arr={4,6,7,9,0,3};
  6.    int DaShu=getDaShu(arr,9);
  7.    System.out.println(DaShu);
  8. }
  9. public static int getDaShu(int[] arr,int x)
  10. {
  11.    for(int y=0;y<arr.length;y++)  //y=0后面是“;”分号,而不是逗号。
  12.    {
  13.     if (arr[y]==x) //这也得改。
  14.     return y;
  15.    }
  16.    return -1; //你return位置放错了。
  17. }

  18. }
复制代码
你是不是想获取9在数组中的位置啊。
说实话,哥们你这个程序写的乱七八糟啊。

作者: 康子龙    时间: 2012-7-7 21:59
你的return-1写错地方了,应该放到getDaShu的方法体内
作者: 康子龙    时间: 2012-7-7 22:01
同一楼,我也觉着你这程序写的有问题。。。。建议你说下你的需求然后我们帮你分析下你的程序哪里需要修改下
作者: 张华廷    时间: 2012-7-7 22:10
public class Demo {
        public static void main(String[] args)
        {
          int[] arr={4,6,7,9,0,3};
           int DaShu=getDaShu(arr,9);
           System.out.println(DaShu);
         }
         public static int getDaShu(int[] arr,int x)
         {
           for(int y=0;y<arr.length;y++)
           {
            if (arr[y]==x)//方法中是int,怎么到数组中了
            return x;
           }
           return -1;//问题很容易搞的,哥们好好学
         }
         
}


作者: 谭培龙    时间: 2012-7-7 22:12
class  Demo
{
public static void main(String[] args)
{
  int []arr={4,6,7,9,0,3};
  int DaShu=getDaShu(arr,9);
  System.out.println("["+DaShu+"]");
}
public static int getDaShu(int[] arr,int x)
{
  for(int y=0;y<arr.length;y++)//这里不是,是;
  {
   if (arr[y]==x)
   return y;
  }
  return -1;//return在里面
}

}
不知道你是不是求9的角标  如果需求是9是否存在请看1楼
作者: 陈冲    时间: 2012-7-7 22:20
本帖最后由 陈冲 于 2012-7-7 22:21 编辑
  1. class  Texst
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.           int []arr={4,6,7,9,0,3};
  6.           int DaShu=getDaShu(arr,9);
  7.           System.out.println(DaShu);
  8.         }
  9.         public static int getDaShu(int[] arr,int x)
  10.         {
  11.           for(int y=0;y<arr.length;y++)
  12.           {
  13.                    if (arr[y]==x) //如果你上边 DaShu=getDaShu(arr,9) 中的9不是表示数组位置的话,这里应该改成arr[y]==x,因为你定义的数组只有6个元素,arr[9]并不存在
  14.                    return x;
  15.           }
  16.           return -1; //return -1;放到getDaShu函数体内,放在外边肯定会报错
  17.         }

  18. }

复制代码
感觉很混乱啊,起码每行的缩进都弄好了啊,要不然自己看的时候都很累
作者: 董深义    时间: 2012-7-7 22:28
public class Demo {
        public static void main(String[] args)
        {
          int[] arr={4,6,7,9,0,3};
           int DaShu=getDaShu(arr,9);
           System.out.println(DaShu);
         }
         public static int getDaShu(int[] arr,int x)
         {
           for(int y=0;y<arr.length;y++)
           {
            if (arr[y]==x)//注意你要比较的x,已经是个具体的整型值,而不是数组的角标
            return y;//返回所查找数在数组中的角标值,返回x,那这个函数不是无意思了,x是你赋值好的
           }
           return -1;//这个语句要放在getDashu(,)内,目的是在数组没找不到参数x时,返回-1
         }
         
}
作者: 邵阳    时间: 2012-7-7 22:32
我怀疑你的java环境变量都匹配错啦。
作者: 王桂丽    时间: 2012-7-7 22:40
对,需求就是求9的角标
作者: 陈冲    时间: 2012-7-7 22:52
2531988876 发表于 2012-7-7 22:40
对,需求就是求9的角标
  1. class  Texst
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.           int []arr={4,6,7,9,0,3};
  6.           int DaShu=getDaShu(arr,9);
  7.           System.out.println(DaShu);
  8.         }
  9.         public static int getDaShu(int[] arr,int x)
  10.         {
  11.           for(int y=0;y<arr.length;y++)
  12.           {
  13.                    if (arr[y]==x) //如果你上边 DaShu=getDaShu(arr,9) 中的9不是表示数组位置的话,这里应该改成arr[y]==x,因为你定义的数组只有6个元素,arr[9]并不存在
  14.                    return y;//如果要求9的角标,这里应该返回y,因为在if(arr[y]==x)中判断出了以y为角标的元素值为9
  15.           }
  16.           return -1; //return -1;放到getDaShu函数体内,放在外边肯定会报错
  17.         }

  18. }
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2