黑马程序员技术交流社区
标题:
查询数组中元素位置的疑问
[打印本页]
作者:
尤洋
时间:
2012-8-3 19:06
标题:
查询数组中元素位置的疑问
本帖最后由 尤洋 于 2012-8-3 20:32 编辑
在毕老师视频中讲到查询数组位置时 里面讲到的是获取key第一次出现在数组中的位置,假如一个数在数组中存在多次,后面相同的数就查不到了,
后来看视频看到 10进制数转2进制时用StringBuffer把数据存储了再一起输出,我就想 能不能 在查询数组的时候也用StringBuffer把查询到数据的 角标
存起来,最后一起把多个相同数据的角标 一次输出。
老师的代码是下面这个,我打算自己写段代码来实现,但是遇到了很多问题,首先是方法的返回类型 ,因为可能返回一个数 也可能返回多个数,如果数字不存在还要返回-1,由于要返回-1,所以也没法设为void类型,另外循环内部一返回数值用return,语句就结束了,没法继续循环往后查找后面相同的数据的角标。
有没有谁能帮忙实现下,查找数组中多个相同数字的位置,而不仅仅是第一次出现的位置。
class ArrayTest4
{
public static void main(String[] args)
{
int[] arr = {3,2,1,5,4,2,9};
int index = getIndex(arr,190);
System.out.println("index="+index);
}
//获取key第一次出现在数组中的位置。如果返回是-1,那么代表该key在数组中不存在。
public static int getIndex(int[] arr,int key)
{
for(int x=0; x<arr.length; x++)
{
if(arr[x]==key)
return x;
}
return -1;
}
}
复制代码
作者:
李东升
时间:
2012-8-3 19:51
public static void main(String[] args) {
int[] arr = {3,2,1,5,4,2,9,9,9};
StringBuffer index = getIndex(arr,9);
System.out.println("index="+index);
}
public static StringBuffer getIndex(int[] arr,int key)
{
StringBuffer b=new StringBuffer();
for(int x=0; x<arr.length; x++)
{
if(arr[x]==key){
b.append(x+1);//由于数组下标是从0开始的,这里要+1
}
}
if(b.length()<=0){//没有找到的话,b的长度就是0了,这时候追加-1.
b.append(-1);
}
return b;
}
复制代码
这个也不难啊,就是在相同时,追加到StringBuffer里面。最后来个判断,StringBuffer的长度为0,说明没找到,就追加个-1.返回值是最后返回一个StringBuffer。
作者:
周坤
时间:
2012-8-3 20:16
学到集合了吗?可以弄一个容器,感觉比较好。
public class ArrayTest4
{
public static void main(String[] args)
{
int[] arr = {3,2,1,5,4,2,9};
ArrayList index = getIndex(arr,2);
System.out.println(index);
}
public static ArrayList getIndex(int[] arr,int key)
{
ArrayList list=new ArrayList();
for(int x=0; x<arr.length; x++)
{
if(arr[x]==key)
list.add(x);//把坐标加到list中
}
if(list.isEmpty())
list.add("所查数组中无次数");
return list;
}
}
作者:
尤洋
时间:
2012-8-3 20:30
李东升 发表于 2012-8-3 19:51
这个也不难啊,就是在相同时,追加到StringBuffer里面。最后来个判断,StringBuffer的长度为0,说明没找到 ...
嗯,多谢指点了。
我尝试了下,的确解决了查找多个角标的问题。
不过17行那 貌似不用+1,求的就是数组中的位置,加1了反而结果错误。
改成 b.append("["+x+"]"); 避免得出的数据紧靠在一起分不清 。
作者:
尤洋
时间:
2012-8-3 20:38
问题已解决
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2