两个单独的数组在更改一个数组的值时会收到相同的值

问题描述 投票:-2回答:1

我正在为学校的Sudoku-Solving项目工作,以某种方式将两个数组以某种方式链接在一起,即当我更改array1中的值时,它也会同时更改array2中的值。请不要讨厌我对我的组织^^。完成后,我将清理/改进代码。

我已经声明了两个不同的字符串数组变量:“ sudokuFelder”和“ sudokuUngeloest”。

我仅更改“ sudokuFelder”的值,而不更改“ sudokuUngeloest”的值,但是以某种方式调试数组时总是具有相同的值。]]

真的很欢迎任何帮助。

class SudokuAlgorithmus
{
    public string[,] sudokuFelder;
    public string[,] sudokuUngeloest;
    public bool richtigeZeile;
    public bool richtigeSpalte;
    public bool richtigesKaestchen;
    private static int UNASSIGNED = 0;


    public SudokuAlgorithmus()
    {
        sudokuFelder = new string[9, 9];
    }

    public SudokuAlgorithmus(string[,] sudoku, int indexZeile, int indexSpalte)
    {
        this.sudokuFelder = sudoku;
        sudokuUngeloest = sudoku;
        richtigeZeile = PruefZeile(indexZeile, indexSpalte);
        richtigeSpalte = PruefSpalte(indexZeile, indexSpalte);
        richtigesKaestchen = PruefKaestchen(indexZeile, indexSpalte);
        LoeseSudoku();
    }

    private void LoeseSudoku()
    {
        for(int i=0;i<9;i++) //Spalte
        {
            for(int j=0;j<9;j++) // Zeile
            {
                if(SudokuKaestchenFrei(j,i) == true)
                {
                    for(int k=1;k<=9;k++)
                    {
                        sudokuFelder[i, j] = k.ToString();
                        if(PruefZeile(j,i) == false || PruefSpalte(j,i) == false || PruefKaestchen(j,i) == false)
                        {
                            sudokuFelder[i, j] = "";
                        }
                        else
                        {
                            break;
                        }
                    }
                    if (sudokuFelder[i, j] == "")
                    {
                        if(j!=0)
                        {
                            for(int l =j-1;l>=0;l--)
                            {
                                if (SudokuKaestchenFreiUngeloest(l, i) == true)
                                {
                                    j = l-1;
                                    sudokuFelder[i, l] = "";
                                    break;
                                }
                            }
                        }
                        else
                        {
                            i = i - 1;
                            j = 8;
                        }
                    }
                }
            }
        }
    }

    private bool SudokuKaestchenFrei(int indexZeile, int indexSpalte)
    {
        bool frei = false;

        if (sudokuFelder[indexSpalte, indexZeile] == "" || sudokuFelder[indexSpalte, indexZeile] == " " || sudokuFelder[indexSpalte, indexZeile] == null)
        {
            frei = true;
            return frei;
        }

        return frei;
    }


    private bool SudokuKaestchenFreiUngeloest(int indexZeile, int indexSpalte)
    {
        bool frei = false;

        if (sudokuUngeloest[indexSpalte, indexZeile] == "" || sudokuUngeloest[indexSpalte, indexZeile] == " " || sudokuUngeloest[indexSpalte, indexZeile] == null)
        {
            frei = true;
            return frei;
        }

        return frei;
    }


    private bool PruefZeile(int indexZeile, int indexSpalte)
    {
        bool gueltig = true;
        for (int i = 0; i < 9; i++)
        {
            for (int j = 0; j < 9; j++)
            {
                if (sudokuFelder[i, indexZeile] == sudokuFelder[j, indexZeile] && sudokuFelder[i, indexZeile] != " " && i != j)
                {
                    gueltig = false;
                    return gueltig;
                }
            }
        }
        return gueltig;
    }

    private bool PruefSpalte(int indexZeile, int indexSpalte)
    {
        bool gueltig = true;
        for (int i = 0; i < 9; i++)
        {
            for (int j = 0; j < 9; j++)
            {
                if (sudokuFelder[indexSpalte, i] == sudokuFelder[indexSpalte, j] && sudokuFelder[indexSpalte, i] != " " && i!=j)
                {
                    gueltig = false;
                    return gueltig;
                }
            }
        }
        return gueltig;
    }

    private bool PruefKaestchen(int indexZeile, int indexSpalte)
    {
        bool gueltig = true;

        if (indexSpalte >= 0 && indexSpalte <= 2 && indexZeile >= 0 && indexZeile <= 2)
        {
            for (int i = 0; i < 3; i++)
            {
                for (int j = 0; j < 3; j++)
                {
                    if (sudokuFelder[indexSpalte, indexZeile] == sudokuFelder[i, j] && sudokuFelder[indexSpalte, indexZeile] != " " && indexSpalte != i && indexZeile != j)
                    {
                        gueltig = false;
                        return gueltig;
                    }
                }
            }
        }
        else if (indexSpalte >= 3 && indexSpalte <= 5 && indexZeile >= 0 && indexZeile <= 2)
        {
            for (int i = 3; i < 6; i++)
            {
                for (int j = 0; j < 3; j++)
                {
                    if (sudokuFelder[indexSpalte, indexZeile] == sudokuFelder[i, j] && sudokuFelder[indexSpalte, indexZeile] != " " && indexSpalte != i && indexZeile != j)
                    {
                        gueltig = false;
                        return gueltig;
                    }
                }
            }
        }
        else if (indexSpalte >= 6 && indexSpalte <= 8 && indexZeile >= 0 && indexZeile <= 2)
        {
            for (int i = 6; i < 9; i++)
            {
                for (int j = 0; j < 3; j++)
                {
                    if (sudokuFelder[indexSpalte, indexZeile] == sudokuFelder[i, j] && sudokuFelder[indexSpalte, indexZeile] != " " && indexSpalte != i && indexZeile != j)
                    {
                        gueltig = false;
                        return gueltig;
                    }
                }
            }
        }
        else if (indexSpalte >= 0 && indexSpalte <= 2 && indexZeile >= 3 && indexZeile <= 5)
        {
            for (int i = 0; i < 3; i++)
            {
                for (int j = 3; j < 6; j++)
                {
                    if (sudokuFelder[indexSpalte, indexZeile] == sudokuFelder[i, j] && sudokuFelder[indexSpalte, indexZeile] != " " && indexSpalte != i && indexZeile != j)
                    {
                        gueltig = false;
                        return gueltig;
                    }
                }
            }
        }
        else if (indexSpalte >= 3 && indexSpalte <= 5 && indexZeile >= 3 && indexZeile <= 5)
        {
            for (int i = 3; i < 6; i++)
            {
                for (int j = 3; j < 6; j++)
                {
                    if (sudokuFelder[indexSpalte, indexZeile] == sudokuFelder[i, j] && sudokuFelder[indexSpalte, indexZeile] != " " && indexSpalte != i && indexZeile != j)
                    {
                        gueltig = false;
                        return gueltig;
                    }
                }
            }
        }
        else if (indexSpalte >= 6 && indexSpalte <= 8 && indexZeile >= 3 && indexZeile <= 5)
        {
            for (int i = 6; i < 9; i++)
            {
                for (int j = 3; j < 6; j++)
                {
                    if (sudokuFelder[indexSpalte, indexZeile] == sudokuFelder[i, j] && sudokuFelder[indexSpalte, indexZeile] != " " && indexSpalte != i && indexZeile != j)
                    {
                        gueltig = false;
                        return gueltig;
                    }
                }
            }
        }
        else if (indexSpalte >= 0 && indexSpalte <= 2 && indexZeile >= 6 && indexZeile <= 8)
        {
            for (int i = 0; i < 3; i++)
            {
                for (int j = 6; j < 9; j++)
                {
                    if (sudokuFelder[indexSpalte, indexZeile] == sudokuFelder[i, j] && sudokuFelder[indexSpalte, indexZeile] != " " && indexSpalte != i && indexZeile != j)
                    {
                        gueltig = false;
                        return gueltig;
                    }
                }
            }
        }
        else if (indexSpalte >= 3 && indexSpalte <= 5 && indexZeile >= 6 && indexZeile <= 8)
        {
            for (int i = 3; i < 6; i++)
            {
                for (int j = 6; j < 9; j++)
                {
                    if (sudokuFelder[indexSpalte, indexZeile] == sudokuFelder[i, j] && sudokuFelder[indexSpalte, indexZeile] != " " && indexSpalte != i && indexZeile != j)
                    {
                        gueltig = false;
                        return gueltig;
                    }
                }
            }
        }
        else if (indexSpalte >= 6 && indexSpalte <= 8 && indexZeile >= 6 && indexZeile <= 8)
        {
            for (int i = 3; i < 6; i++)
            {
                for (int j = 6; j < 9; j++)
                {
                    if (sudokuFelder[indexSpalte, indexZeile] == sudokuFelder[i, j] && sudokuFelder[indexSpalte, indexZeile] != " " && indexSpalte != i && indexZeile != j)
                    {
                        gueltig = false;
                        return gueltig;
                    }
                }
            }
        }

        return gueltig;
    }
}

}

我正在为学校的Sudoku-Solving项目工作,以某种方式将两个数组以某种方式链接在一起,即当我更改array1中的值时,它也会同时更改array2中的值。请...

c# arrays
1个回答
-1
投票

:-)您了解这段代码的含义吗?!您需要有关C#的更多知识。

© www.soinside.com 2019 - 2024. All rights reserved.