A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 董志超 中级黑马   /  2012-9-25 09:17  /  1832 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 董志超 于 2012-9-25 17:49 编辑

        public static int getIndex(int[] arr,int a)
        {
                for(int x=0;x<arr.length;x++)
                {
                        if(arr[x]==a)
                                return x;
                }
                return -1;
        }

一个整形数组,如{8,6,4,2,4,7,8,1,8,5,8,8},用上述方法查找8,查找的是8第一次出现的位置,
如果要查找8在此数组中出现的其他位置,或所有位置,该怎么办呢?


评分

参与人数 1技术分 +1 收起 理由
田建 + 1

查看全部评分

8 个回复

正序浏览
  1. import java.util.Iterator;
  2. import java.util.LinkedList;
  3. import java.util.List;

  4. public class GetIndex {
  5.         public static void main(String[] args) {
  6.                 int[] a={1,2,3,1,3,14,4,6,1};
  7.                 getIndex(a, 1);
  8.         }

  9.         static void getIndex(int[] arr, int a) {

  10.                 List l=  new LinkedList();
  11.                 for (int x = 0; x < arr.length; x++) {
  12.                         if (arr[x] == a) {
  13.                                 l.add(x);
  14.                         }

  15.                 }
  16.                 Iterator<Integer> i=l.iterator();
  17.                 while (i.hasNext()) {
  18.                         Integer integer = (Integer) i.next();
  19.                         System.out.println(integer);
  20.                        
  21.                 }
  22.                
  23.         }
  24. }
复制代码
我是这样实现的不知道有没有帮到你
回复 使用道具 举报
谢谢大家,会了
回复 使用道具 举报
可以设置一个集合,直接add()添加很方便,当然也可以定义一个数组,然后把位置存进数组也行
下面给出存进list集合的办法
public static List getIndex(int[] arr, int a) {
  List list=new ArrayList();
  for (int x = 0; x < arr.length; x++) {
   if (arr[x] == a){
    list.add(new Integer(x));
   }
  }
  return list;
}

最后结果返回一个list集合,取出就可以看到所有位置了

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 赞一个!

查看全部评分

回复 使用道具 举报
  1. package com.aduvm.practice;

  2. public class FInd {

  3.         /**
  4.          * @param args
  5.          */
  6.         public static void main(String[] args) {
  7.                 // TODO Auto-generated method stub
  8.             int[] a =  {8,6,4,2,4,7,8,1,8,5,8,8};
  9.         int[] arrArguments = new int[getIndex(a,8).length];  //建立与返回数组长度一样的数组
  10.         arrArguments = getIndex(a,8);
  11.         for(int arrArgument:arrArguments)  //输出记录
  12.         System.out.println( arrArgument);

  13.                
  14.         }
  15.         public static int[] getIndex(int[] arr,int a)
  16.         {
  17.                     int i = 0;  
  18.                     int[] arrIndex = new int[arr.length];  //用于记录索引
  19.                 for(int x=0;x<arr.length;x++)
  20.                 {
  21.                         if(arr[x]==a){
  22.                                 arrIndex[i] = x;  //记录相同的值
  23.                                 i++;
  24.                         }
  25.                 }
  26.                 return arrIndex;  //程序不完整,仅供参考 ,返回值为0怎么处理?

  27.         }

  28.   


  29. }
复制代码
回复 使用道具 举报
本帖最后由 覃宏海 于 2012-9-25 10:11 编辑

public class Aaa {
public static void main(String[] args){
  int[] a =  {8,6,4,2,4,7,8,1,8,5,8,8};
  int b = getIndex(a, 8);
  System.out.println(b);
}

public static int getIndex(int[] arr,int a)
    {
  int count = 0;
            for(int x=0;x<arr.length;x++)
            {
                    if(arr[x]==a)
                     count++;------------------------------>加入一个计数器,符合条件count++
            }
            return count;
    }

}
这个是通过计数器的方法  更为简单!

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 赞一个!

查看全部评分

回复 使用道具 举报
本帖最后由 覃宏海 于 2012-9-25 10:06 编辑

这是我的代码,先在getIndex中加入StringBuilder容器,判断,如果arr[x]== 8 ,就把它存到容器中去。最后,通过获取StringBuilder容器的长度来获取8出现的次数!
        public static void main(String[] args){
                int[] a =  {8,6,4,2,4,7,8,1,8,5,8,8};
                StringBuilder b = getIndex(a, 8);
                System.out.println(b.length());------------------------------>最后通过获取容器的长度来判断8出现的次数
        }
        
        public static StringBuilder getIndex(int[] arr,int a)
    {
                StringBuilder sb = new StringBuilder();------------------------------->加入容器,如果符合条件就装入到容器中
            for(int x=0;x<arr.length;x++)
            {
                    if(arr[x]==a)
                            sb.append(arr[x]);
            }
            return sb;
    }



评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

回复 使用道具 举报
本帖最后由 霍明波 于 2012-9-25 09:39 编辑

          public static void main(String[] args)
        {   
           int[] a =  {8,6,4,2,4,7,8,1,8,5,8,8};
           getIndex(a,8);
           System.out.println(sb.toString());
               
        }
        static StringBuilder sb = new StringBuilder();
        public static int getIndex(int[] arr,int a)
        {
                for(int x=0;x<arr.length;x++)
                {
                        if(arr[x]==a){
                                sb.append(x);
                                sb.append(',');
                        }   
                }
                return -1;
        }

在你的基础上简单写了个,有点马虎 你看看能不能用

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

回复 使用道具 举报
那么你就定义一个容器计数器将每次匹配的角标保存到容器内!这样容器就能获得你所需要的内容!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马