C#是否有一个很好的方法来遍历一个范围内的每个整数,减去1个?
发布时间:2020-12-15 06:42:21 所属栏目:百科 来源:网络整理
导读:我的情况就像 // radius is an int[]for ( int i = 0; i radius.length; ++i ){ for ( int j = 0; j radius.length; ++j ) { // do some stuff } } 除了我实际上希望j通过0-radius.length的范围,但跳过i: {0,1,...,i-1,i+1,radius.length} 我想知道是否有办
我的情况就像
// radius is an int[] for ( int i = 0; i < radius.length; ++i ) { for ( int j = 0; j < radius.length; ++j ) { // do some stuff } } 除了我实际上希望j通过0-radius.length的范围,但跳过i: {0,1,...,i-1,i+1,radius.length} 我想知道是否有办法做到这一点是紧凑,优雅,高效,可读,甚至是正确的. 我打算怎么做 for ( int i = 0; i < radius.length; ++i ) { for ( int j = 0; j < radius.length; ) { // do some stuff j += j != i ? 1 : 2; } } 解决方法
>也许你可能会考虑使用continue:
// radius is an int[] for (int i = 0; i < radius.length; ++i) for (int j = 0; j < radius.length; ++j) { if (i == j) continue; // do some stuff } 这是我能想到的最简单的一个.它正是代表你想要的一个独立的块. int r = radius.Length; for (i = 0,j = 0; i < r - 1 || j < r; j++) { i += j == r ? 1 : 0; j %= r; if (i == j) continue; //do stuff } >或者不使用continue的另一种方法是(由Millie Smith建议): for (int i = 0; i < radius.length; ++i) for (int j = 0; j < radius.length; ++j) if (i != j) { // do some stuff } 这样,至少你可以摆脱所有的大括号,但是如果. 注意:但我个人认为您的解决方案(使用j = j!= i?1:2;)已经非常紧凑,可读!很难“打”! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |