Switch Case производит итерацию по всему массиву - C#

Узнай цену своей работы

Формулировка задачи:

Всем здравствуйте! Столкнулся с очень странной проблемой: есть матрица 10 строк, 3 столбца. Матрица заполняется char'ами, далее идет такая штука:
for (int j = 0; j < 3; j++)
    for (int i = 0; i < matrix.Count; i++)
    switch (matrix[i][j])
    {
        case 'w':
        matrix[i][j] = 'W';
        matrix[i + 1][j] = 'Z';
        break;
        case 'j':
        matrix[i][j] = 'J';
        matrix[i + 1][j] = 'Z';
        break;
        case 'd':
        matrix[i][j] = 'D';
        matrix[i + 1][j] = 'Z';
        break;
    }
В итоге получаю из вот такой: e-e-e e-w-e e-e-d e-e-e e-e-e e-e-e такую: e-Z-e e-W-e e-e-D e-Z-Z e-Z-Z e-Z-Z пробовал switch()case менять на if-ы, проблема остается. Вообще не понятно как такое получается, может быть поможет кто?

Решение задачи: «Switch Case производит итерацию по всему массиву»

textual
Листинг программы
using System;
using System.Collections.Generic;
 
namespace ConsoleApplication26 {
    class Program {
        static void Main(string[] args) {
            var matrix = new List<char[]> {
                new[] { 'e', 'e', 'e' },
                new[] { 'e', 'w', 'e' },
                new[] { 'e', 'e', 'd' },
                new[] { 'e', 'e', 'e' },
                new[] { 'e', 'e', 'e' },
                new[] { 'e', 'e', 'e' },
            };
 
            // копипаста
            for (int j = 0; j < 3; j++)
                for (int i = 0; i < matrix.Count; i++)
                    switch (matrix[i][j]) {
                        case 'w': {
                                matrix[i][j] = 'W';
                                matrix[i + 1][j] = 'Z';
                                break;
                            }
                        case 'j': {
                                matrix[i][j] = 'J';
                                matrix[i + 1][j] = 'Z';
                                break;
                            }
                        case 'd': {
                                matrix[i][j] = 'D';
                                matrix[i + 1][j] = 'Z';
                                break;
                            }
                    }
 
            matrix.ForEach(r => Console.WriteLine(string.Join(@"-", r)));
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.143 из 5
Похожие ответы