【问题标题】:array logic : How can i arrange two array numbers数组逻辑:如何排列两个数组编号
【发布时间】:2015-06-24 16:51:44
【问题描述】:

我有两个数组:

int array1 [] = {1,2,3,4,5,6,7}; [这个数组可以增长到巨大的数字]

int array2 [] = {1,2,3}; [最多可以有 30 个元素]

array1 应该是父循环并且比array2 有更多的元素。例如,我必须安排如下:

预期结果:
1-1
2-2
3-3
4-1
5-2
6-3
7-1

我该如何继续?

【问题讨论】:

  • @Trobbins 这比“嵌套循环”要复杂一些,但它也不太适合作为 IMO 的 SO 问题。

标签: java arrays logic core


【解决方案1】:

在这种情况下,您不需要嵌套循环;您只需要正确使用模数运算符即可。

for (int i = 0; i < array1.length; i++) {
  System.out.println(array1[i] + "-" + array2[i % array2.length]);
}

之所以有效,是因为模数运算符可以很好地映射到您的问题。您尝试执行的操作需要反复遍历列表 (array2) 并返回到开头。取模操作符本质上是一个“包装”操作符;渐进式思考,它允许您每次达到某个数字(在本例中为 array2 的大小)时返回 0。

【讨论】:

  • 您已正确回答问题!你已经解决了桑塔努的作业。也许你应该添加一个解释为什么这样有效。然后我会赞成而不是反对。
  • 道歉。我会用解释更新答案。
  • 嗯,所以我编辑我的答案以更接近地匹配更新的问题,它被否决了? StackOverflow,你肯定是一只好奇的野兽。
  • RedRobo 也一样,虽然你的比我的好
【解决方案2】:

所以你有两个集合,你想循环遍历较大集合(array1)的每个元素,并为集合的每个元素打印元素,然后打印 set2 的下一个元素(array2)。

我使用了enhanced for loop,它循环遍历每个元素,然后modulus 女巫有效地将i 限制为小于set2 的长度。 (除以 3 的余数必须小于 3)

这允许我们使用i++ 将一个添加到i,并确保它总是循环回到第一个元素,就好像值在spinner 上一样。

  int i = 0;
  for( int value : array1 ) {
     System.out.print( value + "-" + array2[i++ % array2.length] );
  }

【讨论】:

  • 这是不优雅的(因此容易出错),因为它需要增强的for 循环的内部索引和您的手动i 索引。
  • 是的,我打算做一些更接近你的事情,但我不记得 java 是如何处理模数的。
  • 您已正确回答问题!你已经解决了桑塔努的作业。也许你应该添加一个解释为什么这样有效。然后我会赞成而不是反对。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多