Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
2 / 2 / 0
Регистрация: 01.10.2016
Сообщений: 239
1

Индекс за пределами диапазона

13.02.2017, 16:31. Показов 1262. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет,сложилась проблема, не понимаю как решить
C#
1
2
3
for (int i = 0; i < 6; i++)
                            ca[counter,i] = currentQuestions.Answers[i].IsCorrect; (в этой строке ошибка)
                        counter++;
Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен превышать размер коллекции.
Имя параметра: index
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.02.2017, 16:31
Ответы с готовыми решениями:

Индекс за пределами диапазона
Всем привет. Пишу программу для диплома и прямо перед самой защитой вылезла такая беда. При...

Индекс за пределами диапазона
Всем привет! Есть datagridview, которая выводит информацию из бд. Есть выпадающее меню, в котором...

Индекс за пределами диапазона
Всем доброго времени суток. У меня проблема при работе DataGridView и бд(SQL Server) Дело в том...

Индекс за пределами диапазона
В 52 строке программа выдает: &quot;System.ArgumentOutOfRangeException: &quot;Индекс за пределами диапазона....

16
69 / 69 / 28
Регистрация: 12.09.2013
Сообщений: 237
13.02.2017, 17:44 2
По этим трем строкам не определить, почему индекс для массива ca[,] за пределами диапазона.
0
2 / 2 / 0
Регистрация: 01.10.2016
Сообщений: 239
14.02.2017, 02:10  [ТС] 3
Harttman,
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
  using (var connect = new OleDbConnection(ConnectionString))
            {
                var cmd = new OleDbCommand("SELECT Вопросы.[ID вопроса], Ответы.ID AS [ID ответа], Вопросы.[Текст] AS [Текст вопроса], Ответы.[Текст] AS [Текст ответа], [Правильность ответа] FROM Вопросы LEFT JOIN Ответы ON Ответы.[ID вопроса] = Вопросы.[ID вопроса] ORDER BY Вопросы.[ID вопроса], Ответы.ID");
                cmd.Connection = connect;
                connect.Open();
                using (var reader = cmd.ExecuteReader())
                {
                    int prevQuestionId = -1;
                    Question currentQuestions = null;
                    while (reader.Read())
                    {
                        int questionId = (int)reader["ID вопроса"];
                        if (questionId != prevQuestionId)
                        {
                            currentQuestions = new Question()
                            {
                                ID = questionId,
                                Text = (string)reader["Текст вопроса"],
                                Answers = new List<Answer>()
                            };
                            questions.Add(currentQuestions);
 
                        }
 
                        currentQuestions.Answers.Add(new Answer
                        {
                            ID = (int)reader["ID ответа"],
                            Text = (string)reader["Текст ответа"],
                            IsCorrect = (bool)reader["Правильность ответа"]
                        });
                        prevQuestionId = questionId;
                        for (int i = 0; i < 6; i++)
                            ca[counter,i] = currentQuestions.Answers[i].IsCorrect;
                        counter++;
                    }
0
69 / 69 / 28
Регистрация: 12.09.2013
Сообщений: 237
14.02.2017, 06:55 4
А где и как инициализируетяся массив ca[ ] и переменная counter?
0
644 / 528 / 324
Регистрация: 20.05.2015
Сообщений: 1,469
14.02.2017, 07:03 5
Будем учить искать ошибки самостоятельно)
C#
1
2
3
4
5
try{
for (int i = 0; i < 6; i++)
                            ca[counter,i] = currentQuestions.Answers[i].IsCorrect;
                        counter++;
}catch (Exception ex) {MessageBox.Show(String.Format("размер массива:{0} i:{1} counter:{2}")currentQuestions.Answers.Count(),i,counter );}
0
2 / 2 / 0
Регистрация: 01.10.2016
Сообщений: 239
14.02.2017, 09:31  [ТС] 6
Aferuga,
C#
1
currentQuestions.Answers.Count(),i,counter
на вот это идет ругань, просит не понятные скобки ставить currentQuestion(тут просит скобочку).Answers

Добавлено через 33 секунды
Harttman,
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 public partial class Test : Form
    {
        bool[,] ua = new bool[15, 6];
        bool[,] ca = new bool[15, 6];
        int questionNumber;
        int second = 59;
        int minute = 19;
        List<Question> questions;
        const string ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:/Показать шпаковой/Вопросы.mdb";
        OleDbConnection connect = new OleDbConnection(ConnectionString);
        public Test()
        {
            InitializeComponent();
        }
 
        private void Test_Load(object sender, EventArgs e)
        {
            label1.Text = Users.user;
            timer1.Interval = 1000;
            timer1.Start();
            int counter = 0;
0
644 / 528 / 324
Регистрация: 20.05.2015
Сообщений: 1,469
14.02.2017, 09:33 7
Цитата Сообщение от connection123 Посмотреть сообщение
на вот это идет ругань, просит не понятные скобки ставить currentQuestion(тут просит скобочку).Answers
C#
1
MessageBox.Show(String.Format("размер массива:{0} i:{1} counter:{2}",currentQuestions.Answers.Count(),i,counter ))
0
2 / 2 / 0
Регистрация: 01.10.2016
Сообщений: 239
14.02.2017, 09:38  [ТС] 8
Aferuga, не видит переменную i,которая в for это мне придется занести под цикл,или как?
0
644 / 528 / 324
Регистрация: 20.05.2015
Сообщений: 1,469
14.02.2017, 09:42 9
Тогда так
C#
1
2
3
4
5
6
7
8
9
10
int tek_i=0;
try{
 
for (int i = 0; i < 6; i++)
{
tek_i=i;
                            ca[counter,i] = currentQuestions.Answers[i].IsCorrect;
}
                        counter++;
}catch (Exception ex) {MessageBox.Show(String.Format("размер массива:{0} i:{1} counter:{2}",currentQuestions.Answers.Count(),tek_i,counter ));}
0
2 / 2 / 0
Регистрация: 01.10.2016
Сообщений: 239
14.02.2017, 09:49  [ТС] 10
Aferuga, Выводит catch
0
644 / 528 / 324
Регистрация: 20.05.2015
Сообщений: 1,469
14.02.2017, 09:52 11
и что пишет?
0
2 / 2 / 0
Регистрация: 01.10.2016
Сообщений: 239
14.02.2017, 09:54  [ТС] 12
Aferuga, размер массива:1 i:1 counter 0
0
644 / 528 / 324
Регистрация: 20.05.2015
Сообщений: 1,469
14.02.2017, 10:20 13
значит у вас массив са пустой
попробуйте перед циклом
ca.Initialize();

Добавлено через 21 минуту
C#
1
for (int i = 0; i < currentQuestions.Answers.Count(); i++)
0
2 / 2 / 0
Регистрация: 01.10.2016
Сообщений: 239
14.02.2017, 11:46  [ТС] 14
Aferuga, нет должного результата,мне нужно заполнить массив ca значениями true в правильном варианте ответа из 6,на каждый вопрос
0
644 / 528 / 324
Регистрация: 20.05.2015
Сообщений: 1,469
14.02.2017, 12:26 15
да но ответов у вас всего одна штука на момент входа в цикл поэтому и выдает ошибку

Добавлено через 30 минут
Хм... можно вот так попробовать
C#
1
2
if (currentQuestions.Answers.Count()==6)
for (int i = 0; i < currentQuestions.Answers.Count(); i++)
0
2 / 2 / 0
Регистрация: 01.10.2016
Сообщений: 239
14.02.2017, 13:15  [ТС] 16
Aferuga,
C#
1
2
3
4
                        if (currentQuestions.Answers.Count() == 6)
                            for (int i = 0; i < currentQuestions.Answers.Count; i++)
                                ca[counter, i] = currentQuestions.Answers[i].IsCorrect;
                            counter++;
индекс вне границ массива
0
644 / 528 / 324
Регистрация: 20.05.2015
Сообщений: 1,469
14.02.2017, 16:33 17
C#
1
2
private void Test_Load(object sender, EventArgs e)
        { ca.Initialize();
Добавлено через 10 минут
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
if (questionId != prevQuestionId)
                        {
                            currentQuestions = new Question()
                            {
                                ID = questionId,
                                Text = (string)reader["Текст вопроса"],
                                Answers = new List<Answer>()
                            };
                            questions.Add(currentQuestions);
 
                        
counter++;
}
0
14.02.2017, 16:33
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.02.2017, 16:33
Помогаю со студенческими работами здесь

Индекс за пределами диапазона
Привет народ. Ошибка возникает при добавлении данных в DGV. System.ArgumentOutOfRangeException ...

Индекс за пределами диапазона
Помогите, пожалуйста, не понимаю как исправить. private void AddColumns2(DataGridView dgw) ...

Индекс за пределами диапазона. Алгоритм 2
Добрый день, господа форумчане. Я в теме программирования C# не силен, поэтому прошу помощи у вас....

Индекс за пределами диапазона DataGridView
Всем привет! Возникла такая проблема. Компилирую код и вылазит исключение...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru