我的二维数组不想接受我的所有数据

时间:2014-09-28 22:17:19

标签: c# arrays

我根据文本文件中包含的内容给出一个数组大小。因此,当我查看我的数组时,它会显示[4,7]。但是当我将数据读入数组时,它只会上升到[1,6]

请注意,姓氏是数组中数据的位置,其他条目则在右侧显示?符号和禁止进入的符号。

以下代码有什么问题?

static void buildArray() 
{
    int rowCount = 0;
    int colCount = 0;
    int placeHolder = 0;
    double devideNumber = 0;
    int tempNumber = 0;
    string typeOptimum;
    string[] objValue;
    string[] constraintValues;
    List<string> testNumbers;
    List<double> ratioList;
    List<double> rhs;


    foreach (string item in constraintsList)
    {
        if (rowCount > 0)
        {
            colCount++;
        }
        rowCount++;
    }

    rowCount = colCount + 1;
    colCount = colCount + 4;
    string[,] arrayConstraints = new string[8, 9];

    //Console.WriteLine("row {0} col {1}", colCount+1, colCount+4);

    for (int i = 0; i < rowCount; i++)
    {
        for (int j = 0; j < colCount; j++)
        {
            arrayConstraints[i, j] = "0";
        }
    }

    arrayConstraints[0, 0] = "1";

    objValue = constraintsList[0].Split(' ');
    typeOptimum = objValue[0].ToUpper();
    arrayConstraints[0, 1] = (int.Parse(objValue[1]) * -1).ToString();
    arrayConstraints[0, 2] = (int.Parse(objValue[2]) * -1).ToString();

    for (int i = 1; i < rowCount; i++)
    {
        constraintValues = constraintsList[i].Split(' ');
        arrayConstraints[i, 1] = constraintValues[0];
        arrayConstraints[i, 2] = constraintValues[1];
        arrayConstraints[i, i + 2] = "1";
        arrayConstraints[i, colCount - 1] = constraintValues[3];
    }

    //for (int i = 0; i < rowCount; i++)
    //{
    //    Console.WriteLine(" ");
    //    for (int j = 0; j < colCount; j++)
    //    {
    //        Console.Write(arrayConstraints[i, j] + "  ");
    //    }
    //}


    do
    {
        //Console.WriteLine(testNumbers[entryPosition]);
        //Console.WriteLine(arrayConstraints[0,entryPosition+1]);
        //Console.WriteLine(entryPosition+1);

        testNumbers = new List<string>();
        for (int i = 1; i < colCount - 1; i++)
        {
            testNumbers.Add(arrayConstraints[0, i]);
        }

        ratioList = new List<double>();
        rhs = new List<double>();

        for (int i = 1; i < rowCount; i++)
        {
            ratioList.Add(double.Parse(arrayConstraints[i, entryPosition + 1]));
            rhs.Add(double.Parse(arrayConstraints[i, colCount - 1]));
        }

        placeHolder = findRatioTest(ratioList, rhs);


        #region multiplyArray

        for (int i = 0; i < rowCount; i++)
        {
            if (i == placeHolder)
            {
                devideNumber = double.Parse(arrayConstraints[entryPosition + 1, placeHolder]);
                for (int j = 0; j < colCount; j++)
                {
                    tempNumber = int.Parse(arrayConstraints[placeHolder, j]);
                    arrayConstraints[placeHolder, j] = (tempNumber / devideNumber).ToString();
                }
            }
            else
            {
                for (int k = 0; k < colCount; k++)
                {
                    arrayConstraints[i, k] = (double.Parse(arrayConstraints[i, k]) - (double.Parse(arrayConstraints[i, entryPosition + 1])) * double.Parse(arrayConstraints[placeHolder, k])).ToString();
                }
            }
        }
        #endregion

        foreach (string item in arrayConstraints)
        {
            Console.WriteLine(item);
        }

    } while (findNumber(typeOptimum, testNumbers) == true);
        //while (findNumber(typeOptimum, testNumbers) == true)
        //{

        //    testNumbers.Clear();
        //    for (int i = 1; i < colCount - 1; i++)
        //    {
        //        testNumbers.Add(arrayConstraints[0, i]);
        //    }
        //} 



}

static Boolean findNumber(string type, List<string> listNumbers) 
{
    Boolean found = false;
    int tempInt, count = 0;

    tempInt = int.Parse(listNumbers[0]);

    if (type == "MIN")
    {
        #region MIN
        foreach (string item in listNumbers)
        {
            count++;
            if (int.Parse(item) > 0 || int.Parse(item)> tempInt)
            {
                entryPosition = count - 1;
                tempInt = int.Parse(item);
                found = true;
            }
        }
        #endregion
    }
    else
    {
        #region MAX
        foreach (string item in listNumbers)
        {
            count++;
            if (int.Parse(item) < 0 || int.Parse(item) < tempInt)
            {
                entryPosition = count - 1;
                tempInt = int.Parse(item);
                found = true;
            }
        }
        #endregion
    }



    return (found);

}

static int findRatioTest(List<double> listRatio, List<double> rhs) 
{
    int placeHolder = 0;
    List<double> ratioTest = new List<double>();
    int count = 0;
    double tempSmall;
    int tempPlace = 0;


    foreach (double item in listRatio)
    {
        try
        {
            ratioTest.Add(rhs[count]/ item);
        }
        catch (Exception)
        {
            ratioTest.Add(double.Parse("-1"));
            throw;
        }
        count++;
    }

    count = 0;
    tempSmall = ratioTest[0];
    foreach (double item in ratioTest)
    {
        if (item != 0 && item > 0)
        {
            if (item < tempSmall)
            {
                tempSmall = item;
                tempPlace = count;
            }
        }
        count++;
    }

    placeHolder = tempPlace + 1;
    ratioTest.Clear();
    return (placeHolder);
}

0 个答案:

没有答案