Ошибка компиляции с массивом - System.ArgumentOutOfRangeException - C#

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

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

В строке

33

выдает ошибку: почему?

Необработанное исключение типа "System.ArgumentOutOfRangeException" в mscorlib.dll Дополнительные сведения: Индекс и длина должны указывать на позицию в строке.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace BrainfuckSolution{
 
    class BrainfuckCore{
 
        private int INDEX = 0;                // индекс элемента buff
        private int COUNT = 0;                // количество символов в buff
        private int SIZE = 0;                //  размер строки от символа до символа
        private string RESULT;
 
        private string code;               //строка кода
        private char[] buff;              //массив комманд
        private char[] code_chars;        // масив code
 
        public BrainfuckCore(string code){
            this.code = "++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++. ------.--------.>+.>." // Для обозначения обрабатываемого текста;
            code_chars = code.ToCharArray();
            command();
        }
 
        // Комманды кода
        private void command(){
            int i=0;
            chars();
            while(i<code.Length){
                switch(code_chars[i]){
                    case '[':
                        int size = getSize(code.Substring(i,code.Length));
                        String str = code.Substring(i+1,i+SIZE-1);
                        int length = str.Length;
                        cycle(buff[INDEX],length, str);
                        i += size-1;
                        break;
                    case '>':
                        next();
                        i++;
                        break;
                    case '+':
                        inc();
                        i++;
                        break;
                    case '<':
                        previous();
                        i++;
                        break;
                    case '-':
                        dec();
                        i++;
                        break;
                    case '.':
                        getChar();
                        i++;
                        break;
                    default:
                        i++;
                        break;
                }
            }
        }
 
        // Подсчет символов в циклах
        private int getSize(String str)
        {
            this.SIZE = 0;
            int f=0;
            int l=0;
            for(int k=0;k<str.Length;k++) {
                if (str.ToCharArray()[k] == '[') {
                    f++;
                    SIZE++;
                }else if (str.ToCharArray()[k] == ']') {
                    l++;
                    SIZE++;
                }else SIZE++;
                if (f == l) {
                    k = str.Length - 1;
                    return SIZE;
                }
            }
            return SIZE;
        }
 
    }
}

Решение задачи: «Ошибка компиляции с массивом - System.ArgumentOutOfRangeException»

textual
Листинг программы
        string code = "++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++. ------.--------.>+.>.";
        int begin = code.IndexOf("[");
        int end = code.LastIndexOf("]");
        begin = (begin != -1) ? begin + 1 : 0;
        end = (end != -1) ? end : 0;
        code = code.Substring(begin, (code.Length - begin) - (code.Length - end));
        if (code.Length == 0) Console.ReadKey(); //Выход из функции
        MatchCollection match = Regex.Matches(code, @"[\+\>\<\-\.]");
        code = String.Empty;
        for (int i = 0; i < match.Count; i++)
        {
            code += match[i].Value; 
        }
        Console.Write(code);
        char[] code_chars = code.ToCharArray();
        //chars(); Понятия не имею к чему это о_О
        foreach (char ch in code_chars) 
        {
            switch (ch)
            {
                case '>':
                    //next(); Какая то функция next();
                    break;
                case '+':
                    //inc(); Какая то функция inc();
                    break;
                case '<':
                    //previous(); Какая то функция previous();
                    break;
                case '-':
                    //dec(); Какая то функция dec();
                    break;
                case '.':
                    //getChar(); Какая то функция getChar();
                    break;
            }
        }
        Console.ReadKey();

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


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

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

12   голосов , оценка 3.917 из 5