繁体   English   中英

查找某些输入的所有索引

[英]Finding all indices for certain input

我是Java新手,也是该网站的新用户,这是我的阵列

    double array[]  = new double[6];

    // Initializing elements
    array[0] = 0.334;
    array[1] = 0.334;
    array[2] = 0.334;
    array[3] = 0.501;
    array[4] = 0.501;
    array[5] = 0.334;

    // Use for loop to display elements
     for (int i = 0; i < array.length; i++) 
    {
           System.out.print(array[i]);  
           System.out.print("\n");      
    }

我想找出值(0.334)的所有索引; 我的意思是,对于此示例,它应返回4,这表明4个索引具有此值。

                    int index=-1;
                    int i; 
                    for(i = 0; i < array.length;i++)
                        {
                            if (Input>=array[i]== ) // user input = 0.334
                               {
                                index=array[i];
                    System.out.print("Output = "+index);
                    return ;
                    }   
}
  • 要查找值的出现次数,您可以简单地使用计数器变量 在循环之前将其初始化为0,并在遇到数组中的所需值时将其递增1。

  • 要查找指向所需值的所有索引的列表,您可以简单地使用Set<Integer>结构,类似的原理也适用于此:在循环之前初始化一个空集,然后在循环中将索引添加到该集合中他们指向主题的价值。 循环之后,您将拥有一组所有指向您特定值的索引,并且set.size() (可以用作“计数器变量”的替代方法)将为您提供该值的出现次数。

第一次迭代:

  int count = 0;
  for (double d : array) {
    if (d == user_input) {
      count ++;
    }
  }
  return count;

然后,请注意浮点数可能无法完全比较。 也就是说,内存中的数字(例如,如果计算得出)可能与用户键入(例如,解析的)不完全相同

  int count = 0;
  for (double d : array) {
    if (approximatelyEqual(d, user_input, 1e-6)) {
      count ++;
    }
  }
  return count;

在此处查找“近似等于”的定义

尝试这个

    int count = 0;
    double input = 0.334;
    for (int i = 0; i < array.length; i++) {
        if (array[i] == input)
            ++count;
    }

    System.out.println(count);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM