灵活数量的 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 我希望这更清楚


提前谢谢你!


开心每一天1111
浏览 173回答 1
1回答

天涯尽头无女友

我认为实现这一目标的最简单方法是递归。假设您希望每个范围具有相同的限制(即 i、j、k 等从 0..100 开始),您可以这样做:void recursive(List<Integer> values, int depth) {&nbsp; if (values.size() == depth) {&nbsp; &nbsp; // Do the thing you want to do with the values, i.e. the "innermost loop".&nbsp; } else {&nbsp; &nbsp; // This is intentionally Integer, so that remove removes that value, not the element at that index.&nbsp; &nbsp; for (Integer a = 0; a <= 100; ++a) {&nbsp; &nbsp; &nbsp; values.add(a);&nbsp; &nbsp; &nbsp; recursive(values, depth);&nbsp; &nbsp; &nbsp; values.remove(a);&nbsp; &nbsp; }&nbsp; }}当depth列表中的值少于值时,这会依次将范围内的每个值添加到列表中,然后递归。一旦列表中有足够的值,它就会做你想做的“事情”。该列表将包含depth值,您可以使用 访问单个值values.get(i)。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java