在数组之间传输数据并丢失一些值

Posted

技术标签:

【中文标题】在数组之间传输数据并丢失一些值【英文标题】:Transferring the data between arrays and missing some values 【发布时间】:2016-08-09 18:50:43 【问题描述】:

我有一个大小为 200 的一维 String 数组,偶数索引单元 (0,2,4,6,...) 由 Int 和奇数索引单元 (1,3,5,7, ...) 由Float 填充。为了向该数组添加一些值,我想将此数组传输到大小为 [100,2] 的二维 String 数组,第一行由 Int 填充,第二行由浮点数填充.

问题是在数组之间的传输过程中,我随机错过了一些值(我得到的是 Null)。我已经检查了数据以确保我的数据格式正确。

    int shomar = 0;

    for (int y = 0; y < MITNeighborSource.Length; y +=2)                                                                                                        
    
        for (int x = 0; x < Cal.GetLength(0); x++)
        
          if (MITNeighborSource[y] == Cal[x, 0])
          
              MITNeighborSourceEdge[0, shomar] = MITNeighborSource[y];   //course ID                                                                                                   
              MITNeighborSourceEdge[1, shomar] = Cal[x, 2];          //output degree                                                                                               
              MITNeighborSourceEdge[2, shomar] = Cal[x, 3];          //Input degree                                                                                                
              MITNeighborSourceEdge[3, shomar] = MITNeighborSource[y+1]; //The cosine similarity                                                                                       
              break;
          
          if (MITNeighborSource[y] == Cal[x, 1])
          
              MITNeighborSourceEdge[0, shomar] = MITNeighborSource[y];   //course ID                                                                                                   
              MITNeighborSourceEdge[1, shomar] = Cal[x, 4];          //output degree                                                                                               
              MITNeighborSourceEdge[2, shomar] = Cal[x, 5];          //Input degree                                                                                                
              MITNeighborSourceEdge[3, shomar] = MITNeighborSource[y+1]; //The cosine similarity                                                                                                                                                                      
              break;
          
        
shomar++;
    

可能是什么问题?

【问题讨论】:

请发minimal reproducible example,很遗憾,我们无法在没有看到您的代码的情况下帮助您。 @s.m 'Shomar' 显示列的索引 我绝对不会为此目的引入一个二维数组,而只是引入两个独立的列表,一个包含偶数,一个包含奇数。 @LasseV.Karlsen 代码已编辑 我和@HimBromBeere 一起讨论这个问题。另外,给你错误的实际行是什么?执行这段特定代码的单元测试在哪里?如果没有这样的东西,我强烈建议你放弃这个,先写一个简单的测试用例,然后让它通过。这不像你有讨厌的依赖来模拟这里。 【参考方案1】:

如果你只是想根据项目的索引将一维数组分成二维数组,你可以像下面那样做。假设 strArray 是您的一维数组:

        string[] oneDArray = new[] "200", "2.1", "40", "56.3", "34";
        var list = oneDArray .ToList();
        var twoDArray = list.GroupBy(x => list.IndexOf(x)%2).Select(x=>x.ToArray()).ToArray();

这里 twoDArray 将有两个数组,其中包含来自 oneDArray 的偶数和奇数索引元素。

【讨论】:

以上是关于在数组之间传输数据并丢失一些值的主要内容,如果未能解决你的问题,请参考以下文章

函数之间的数组指针丢失值(用 swig 编译以在 python3 中使用)

数组值从 JS 丢失到控制器

使用 OpenGL 渲染时 CPU 和 GPU 之间的数据丢失

当我将数组值用作 bash 脚本中位置参数的输入时,我丢失了数组值

删除数组值而不丢失引号[重复]

从生成的数组列表python中查找丢失的时间