.net - 逻辑帮助,可能与循环有关

标签 .net vb.net loops logic

例如,我有一个项目列表,比方说:

  1. 苹果
  2. 橙色
  3. 香蕉
  4. 甜瓜
  5. 木瓜

现在我的显示限制为 3 个项目。比如说,如果我想显示 Papaya ,那么它必须在第二个插槽上,而 Melon 应该在第一个插槽上,因为限制为 3。

+---+---------+---------+
| 1 | Apple   | Melon   |
| 2 | Orange  | Papaya  |
| 3 | Banana  |         |
+-----------------------+

现在我无法将其转换为代码。例如,如果我想获得什么插槽 Banana应该是,我应该能够得到3 。如果我想知道什么槽Melon应该是,我会得到1 。谁能帮我吗?我需要做什么才能将这个想法转换为代码形式。

最佳答案

如果你的数组和槽都是从零开始的,你可以通过简单的计算得到槽:

slot = arrayindex mod numslots

如果您的数组是基于 1 的数组,情况会变得更加复杂,但只需在模数运算之前减去 1 即可解决该问题:

slot = (arrayindex - 1) mod numslots

而且,如果您的是基于1的,则只需在上述两种情况下将1添加到即可。

slot = (arrayindex mod numslots) + 1
slot = ((arrayindex - 1) mod numslots) + 1

例如,假设有从 1 开始的数组和从 0 开始的槽(其中三个,0 到 2),木瓜的索引为 5。使用:

slot = (arrayindex - 1) mod numslots
slot = (    5      - 1) mod    3
slot =          4       mod    3
slot =                 1

因此它将进入第二个插槽。

关于.net - 逻辑帮助,可能与循环有关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17266736/

相关文章:

c# - .NET 模拟 Ctrl+Alt+Del 发送键

c# - .NET 程序集的签名

VB.Net BufferedGraphics透明背景

c++ - vb.net 将数组传递给 C++ 导致堆栈错误

c - 如何在循环中使用 fgets?

.net - 为 OCR 连接附近的点(询问一些提示,例如使用形态学操作)

c# - nHibernate 更新什么都不做

C# > VB 转换,RelayCommand 的行为不同

javascript - 如果在迭代 javascript 循环时使用 "in"和 "="运算符有什么区别?

loops - AutoIt - 如何使用停止按钮结束 GUI 中的 while 循环