java - 灵活数量的 for 循环 - Java
问题描述
我正在寻找一种方法来使用灵活数量的 for 循环或一些可以做同样事情的解决方案。基本上我希望一个变量在每个循环中从 0 到 100 并遍历所有组合。for 循环是嵌套的,所以如果我正在为两个代理寻找解决方案,我有:
for(int i = 0; i<=100; i++){
for(int j = 0; j<=100, j++){
//do some stuff with i and j
}
}
但我事先不知道需要多少代理,所以我正在寻找一种灵活的方法来获得相同的结果。这可能是一个非常简单的问题,但我找不到给我一个有效解决方案的威胁。
编辑:有人向我指出这个问题还不够清楚,我将尝试展示我想要实现的目标:
假设我有 n 个代理,如果 n == 1 那么我需要这个:
for(int j = 0; j<=100, j++){
//do some stuff with j
}
对于 n == 2 我想要:
for(int i = 0; i<=100; i++){
for(int j = 0; j<=100, j++){
//do some stuff with i and j
}
}
对于 n == 3 另一个用于查看这些现有的等等,但它需要灵活,因为用户被要求输入 n 并且可以输入任何整数。//EndEDIT 我希望这能让它更清楚
先感谢您!
解决方案
我认为实现这一目标的最简单方法是递归。
假设您希望每个范围具有相同的限制(即 i、j、k 等从 0..100 开始),您可以这样做:
void recursive(List<Integer> values, int depth) {
if (values.size() == depth) {
// Do the thing you want to do with the values, i.e. the "innermost loop".
} else {
// This is intentionally Integer, so that remove removes that value, not the element at that index.
for (Integer a = 0; a <= 100; ++a) {
values.add(a);
recursive(values, depth);
values.remove(a);
}
}
}
虽然列表中的值少于depth
,但这会将范围中的每个值依次添加到列表中,并递归。
一旦列表中有足够的值,它就会做你想做的“事情”。该列表将包含depth
值,您可以使用 访问单个值values.get(i)
。
推荐阅读
- c# - 如何使用 C# ASP.NET Core 应用程序通过 Elastic Beanstalk 为特定文件夹设置权限?
- python - 没有线条和误差线的 Pandas 线图(来自 groupby 和 cut)
- javascript - 通过组合来自表单的数据和 fetch api 响应来发布数据
- typescript - 为什么 TypeScript 不在类型化属性中将数字转换为字符串?
- php - 选择 on-change 选择的加载项
- angular - 如何在 .then 函数或查询中更改/保存值
- wordpress - 是否可以从数字字段值或嵌套表单合并标签中的值自动填充数量字段值?
- r - Cforest 回归:ctree_control 中的错误(alpha = 0.02):未使用的参数(alpha = 0.02)
- html - 如何使用 CSS 创建锯齿形图案
- javascript - 使用带有多个键的 onkeydown 时出现“故障”