我是Objective-C编程的新手,我的背景是labview,这是一种图形化编程语言,我使用过Visual Basic和HTML / CSS也是相当多的。我正在试图找出为下面的模式创建数据数组的逻辑。我稍后需要该模式以特定顺序从另外2个数组中提取数据。
我可以通过引用a = 1,b = 2,c = 3等来实现,然后使用a,b,c创建数组但是我想使用一个循环,这样我就没有8个引用了阵列。这些引用将用于生成另一代数据,所以除非我能帮助找出逻辑,否则我最终会在数组上面找到72个引用。
//这是第一个给出模式的文件
0 0 0 0(etc)// 1 1 1 1 // 2 2 2 2
NSMutableArray * expSecondRef_one = [NSMutableArray array];
int a1 = 0;
while (a1 < 9) {
int a2 = 0;
while (a2 < 8) {
NSNumber * a3 = [NSNumber numberWithInt:a1];
[expSecondRef_one addObject:a3];
a2++;
}
a1++;
}
//这是我绊倒的第二个,我正在寻找模式
1 2 3 4 5 6 7 8 //
0 2 3 4 5 6 7 8 //
0 1 3 4 5 6 7 8 //
0 1 2 4 5 6 7 8 // etc to -> // 0 1 2 3 4 5 6 7
如果你在一行中运行它,每第9个数字为-1,但我不知道如何在8的模式上执行此操作。
提前致谢!
格雷厄姆
答案 0 :(得分:2)
我认为你正在寻找类似的东西:
for(int i = 0; i < 9; ++i) {
for (int j = 0; j < 8; ++j) {
if (j < i) {
//Insert j into array
}
else {
//Insert j + 1 into array
}
}
}
我省略了实际将数字插入数组的代码。
我不完全清楚你是如何使用这个数组的,但是如果这只是从另一组数组访问数据的索引顺序,你可以跳过第一组数组并且只是使用此循环可以在以后访问您的数据。
- 编辑 -
如果我正确理解你,你想要将9个数字的数组中的每个索引与每个其他索引进行比较,然后将结果存储在数组中。如果是这样的话,你可以这样做:
for (int i = 0; i < 9; ++i) {
for (j = 0; j < 9; ++j) {
if (j != i) {
//Compare object at array index i with object at array index j
}
}
}
答案 1 :(得分:0)
该循环在我想要做的事情的元级别上完美地工作。我正在创建的数组是引用原始数组(9个单元格)使用你制作的算法我删除了那些并且可以完全按照我想要的方式引用原始数组。
非常感谢。
干杯
格雷厄姆
答案 2 :(得分:0)
NSMutableArray *a=[[NSMutableArray alloc]init];
for(int i=0;i<8;i++){
NSMutableString *s=[[NSMutableString alloc]init];
for(int j=0;j<8;j++){
if(i!=j){
[s appendString:[NSString stringWithFormat:@"%i",j]];
}
}
[a addObject:s];
}
NSLog(@"%@",a);
}
输出:
1234567,
0234567,
0134567,
0124567,
0123567,
0123467,
0123457,
0123456