Member 11247684 Ответов: 1

Как напечатать неровные элементы массива в файле в виде матрицы или сетки


Я попытался определить позиции x и y для диагональных ребер для каждой ячейки на следующем рисунке:

Сетка ячеек

Я не знаю, является ли мой способ получения этих позиций правильным или нет, поэтому мне нужно распечатать выходной зубчатый массив в txt-файле в виде матрицы, чтобы проверить это, я написал следующий код :
using System;
    using System.IO;
    using System.Text;
    using System.Drawing;
    using System.Collections;
    using System.ComponentModel;
    using System.Windows.Forms;
    using System.Data;
    using System.Threading;
    using AUV_Topology;
    using System.Collections.Generic;

    namespace AUVtopology
    {
        public partial class Form1 : Form
        {

    static int[] cellsCenters;

    static int[] columnsXs;

    static int[][] rows;


    public int[][] calculateCellsCenters(int intialPoint,int lastPoint)
        {

            FileStream fs = new FileStream("C:/Users/Welcome/Desktop/testPositions.txt", FileMode.Append, FileAccess.Write);

            int d = lastPoint - intialPoint;

            int cellSide = d /5;

            int intialCell = intialPoint - cellSide;

            columnsXs = new int[6];

            columnsXs[0] = intialCell;

            rows = new int[6][]; // jagged array

            for (int i = 0; i < rows.Length; i++)
            {

                rows[i] = new int[6];

                for (int k = 0; k < rows[i].Length; k++)
                {

                    columnsXs[k] = columnsXs[k] + cellSide;


                    using (StreamWriter sw = new StreamWriter(fs))
                    {
                        sw.Write(" "+columnsXs[k]+ " ");
                    }


                }

                using (StreamWriter sw = new StreamWriter(fs))
                {
                    sw.WriteLine();
                }

            }


            return rows;

        }

        private void selectedPath_Click(object sender, EventArgs e)
        {


          calculateCellsCenters(200, 325);

          
            
        }


} // end-class


} // end namespace



Я получил следующую ошибку на следующем рисунке, когда нажал кнопку, вызывающую метод, который отвечает за выполнение этих вычислений и печать массива с кляпом во рту :


Ошибка после нажатия кнопки

Подробности этой ошибки :


See the end of this message for details on invoking 
    just-in-time (JIT) debugging instead of this dialog box.

    ************** Exception Text **************
    System.NullReferenceException: Object reference not set to an instance of an object.
       at AUVtopology.Form1.calculateCellsCenters(Int32 intialPoint, Int32 lastPoint, Int32 numOfcellsEachRow) in C:\Users\Welcome\Desktop\project\GAAPS\AUV_Topology\Form1.cs:line 935
       at AUVtopology.Form1.selectedPath_Click(Object sender, EventArgs e) in C:\Users\Welcome\Desktop\project\GAAPS\AUV_Topology\Form1.cs:line 975
       at System.Windows.Forms.Control.OnClick(EventArgs e)
       at System.Windows.Forms.Button.OnClick(EventArgs e)
       at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
       at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
       at System.Windows.Forms.Control.WndProc(Message& m)
       at System.Windows.Forms.ButtonBase.WndProc(Message& m)
       at System.Windows.Forms.Button.WndProc(Message& m)
       at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
       at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
       at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


    ************** Loaded Assemblies **************
    mscorlib
        Assembly Version: 4.0.0.0
        Win32 Version: 4.6.1637.0 built by: NETFXREL3STAGE
        CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
    ----------------------------------------
    AUV_Topology
        Assembly Version: 1.0.0.0
        Win32 Version: 1.0.0.0
        CodeBase: file:///C:/Users/Welcome/Desktop/project/GAAPS/AUV_Topology/bin/Release/AUV_Topology.exe
    ----------------------------------------
    System.Windows.Forms
        Assembly Version: 4.0.0.0
        Win32 Version: 4.6.1586.0 built by: NETFXREL2
        CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
    ----------------------------------------
    System
        Assembly Version: 4.0.0.0
        Win32 Version: 4.6.1637.0 built by: NETFXREL3STAGE
        CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
    ----------------------------------------
    System.Drawing
        Assembly Version: 4.0.0.0
        Win32 Version: 4.6.1586.0 built by: NETFXREL2
        CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
    ----------------------------------------
    Microsoft.VisualBasic.PowerPacks.Vs
        Assembly Version: 10.0.0.0
        Win32 Version: 10.0.30319.1
        CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/Microsoft.VisualBasic.PowerPacks.Vs/10.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.PowerPacks.Vs.dll
    ----------------------------------------
    Microsoft.VisualBasic
        Assembly Version: 10.0.0.0
        Win32 Version: 14.6.1586.0 built by: NETFXREL2
        CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/Microsoft.VisualBasic/v4.0_10.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.dll
    ----------------------------------------
    System.Core
        Assembly Version: 4.0.0.0
        Win32 Version: 4.6.1638.0 built by: NETFXREL3STAGE
        CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
    ----------------------------------------

    ************** JIT Debugging **************
    To enable just-in-time (JIT) debugging, the .config file for this
    application or computer (machine.config) must have the
    jitDebugging value set in the system.windows.forms section.
    The application must also be compiled with debugging
    enabled.

    For example:

    <configuration>
        <system.windows.forms jitDebugging="true" />
    </configuration>

    When JIT debugging is enabled, any unhandled exception
    will be sent to the JIT debugger registered on the computer
    rather than be handled by this dialog box.


Что я уже пробовал:

Мне нужно знать, в чем проблема и как правильно вычислить местоположение

[no name]

"Мне нужно знать, где проблема", - сообщение об ошибке говорит вам, в чем проблема и где.

1 Ответов

Рейтинг:
9

Member 10317286

Важная часть послания заключается в следующем:

System.NullReferenceException: Object reference not set to an instance of an object.

Он говорит вам, что один из ваших объектов равен нулю. Лучший способ выяснить, какой из них-запустить код в отладчике и проверить каждую переменную в строке, где возникает исключение. Как только вы узнаете, какая переменная (или переменные) равна нулю, вы сможете выяснить, где она должна была быть создана, и исправить это.