多个整数的线性搜索
Posted
技术标签:
【中文标题】多个整数的线性搜索【英文标题】:linear search for multiple integers 【发布时间】:2019-12-14 16:09:23 【问题描述】:我试图实现一个整数数组的线性搜索,如果数字是 3 的倍数,它将打印数组中数字的索引,如果没有任何数字是 3 的倍数将返回-1 我试图在不使用方法的情况下实现它,我的问题是我将如何打印/返回-1? 知道我的代码是
int[] a = 3, 5, 22, 7, 9, 8, 21;
System.out.println("the index of 3 multiplies is" );
for (int i = 0; i < a.length; i++)
if (a[i] % 3 == 0)
System.out.print(i + " ");
continue;
【问题讨论】:
使用foundIndex
变量,初始化为-1。只有当它仍然是 -1 时才继续循环。在循环之后打印变量的值。
你不需要 continue 语句。
为什么不让函数返回一个包含三的倍数的数字索引的数组,否则返回 null。然后您单独进行打印。
你能帮我把它显示在代码中吗
我已经理解了您尝试解释的部分想法,但我不确定它是否正确。我没有得到的想法是我将如何检查“如果它仍然是-1”?问题是,如果我将其打印出来,即使是 3 的倍数,也会以任何方式打印它
【参考方案1】:
如果算法发现乘以 3,您可以使用 boolean found = false
并将其设置为 true
。在 for 循环之后,您可以询问结果。
【讨论】:
如果目的呢?我有一段时间没有使用它或其他什么..你能解释一下吗? 你在下面的解决方案中自己想出来了,这正是我的意思;)【参考方案2】:int[] a = 3, 5, 22, 7, 9, 8, 21;
int multipleOfThree = 0;
System.out.println("the index of 3 multiplies is" );
for (int i = 0; i < a.length; i++)
if (a[i] % 3 == 0)
System.out.print(i + " ");
multipleOfThree++;
if( multipleOfThree == 0 )
System.out.println(-1);
我认为这就是您要寻找的。如果你想使用一个方法,而不是打印 multipleOfThree,你应该返回它。
【讨论】:
谢谢!!我用过类似的方法解决它!你的也有效!【参考方案3】:int[] a = 1,5,22,7,52,8,20;
System.out.println("the index of 3 multiplies is" );
boolean found = false;
for(int i = 0; i<a.length;i++)
if(a[i]%3==0)
found = true;
System.out.println(i+" ");
if(!found)
System.out.println("-1");
``
【讨论】:
以上是关于多个整数的线性搜索的主要内容,如果未能解决你的问题,请参考以下文章