Не получается отразить данные в char1
У меня есть массив с данными lines:
7.12.2023
345
8.12.2023
435
9.12.2023
456
10.12.2023
567
11.12.2023
387
12.12.2023
402
13.12.2023
623
14.12.2023
567
15.12.2023
213
Так же у меня есть переменная pik равная, допустим, 127. Я хочу отобразить переменную pik используя даты из массива lines.
for (int o=0;o<lines.Length-1; o+=2) // запускаю цикл от 0 до 17 с шагом 2
{
int n = lines.Length-1; // переменная с кол-вом строк
string[] strArr = Enumerable.Repeat(pik, n).ToArray(); // массив для отображения по Y
chart1.Series[1].Points.AddXY(lines[o], strArr[o]); // отображение на графике
}
По итогу, при попытке вывода, указывается ошибка в последней строке(индекс находиться вне границ массива). Почему так получается? Массивы одинаковы по количеству строк, данные в массиве нормально отображаются, я это проверял в отладке. Полный код программы:
public void button_Click(object sender, EventArgs e)
{
int height1 = Convert.ToInt32(height.Text);
Baza bz = new Baza();
using (var connection = bz.getConnection())
{
MySqlCommand command = new MySqlCommand("SELECT pik FROM dt WHERE height=@hei", connection);
command.Parameters.AddWithValue("@hei", height1);
connection.Open();
string pik = Convert.ToString(command.ExecuteScalar());
if (pik == null)
{
MessageBox.Show("Нет данных в базе");
}
string[] lines = File.ReadAllLines(fail); // массив берет данные из файла, который был загружен пользователем в другой части кода
if (lines == null)
{
MessageBox.Show("Нет данных на графике");
}
for (int o = 0; o < lines.Length - 1; o += 2)
{
chart1.Series[1].Points.AddXY(lines[o], pik);
}
Ответы (2 шт):
Массивы одинаковы по количеству строк - да нет же! lines.Length-1 это не количество строк, а количество строк минус 1. int n = lines.Length;. У вас просто опечатка в коде.
И вынесите создание массива из цикла, а то у вас получается создается lines.Length / 2 одинаковых массивов.
Да и вообще, зачем второй массив? Выбросить его можно.
for (int o = 0; o < lines.Length - 1; o += 2)
{
chart1.Series[1].Points.AddXY(lines[o], pik);
}
Всё.
Надо было, просто, вместо 1 написать 0:
chart1.Series[0].Points.AddXY(lines[o], pik);