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

Ввод массивов через множество textBox, подсчёт суммы, и вывод через listBox. Ошибка при вводе через textBox

23.02.2015, 17:59. Показов 4451. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Создал я кучу текст боксов, там происходит ввод каждого элемента массива. И вывод через листбокс
По идее должен высчитывать сумму ряда и показывать чему равна эта сумма.
Программа такая работает тока если ввести все поля.
Но консольная версия без использования double.Parse() работает даже если какое-то поле не введено.
в sum = new double[13]; по идее sum = new double[12] должна быть а работает ток с 13.
В цикле использую 12 хотя можно и 13,
если ввод заменить числами, работает как часы.
Подскажите как исправить. Я ток осваиваю шарп желательно попроще обьясните пожалуста
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
                  int i;
                  double summ;
                  double[] sum = new double[13];
                  sum[0] = double.Parse(tb_met.Text);               
                  sum[1] = double.Parse(tb_ugld.Text);
                  sum[2] = double.Parse(tb_tol.Text);
                  sum[3] = double.Parse(tb_am.Text);
                  sum[4] = double.Parse(tb_ksi.Text);
                  sum[5] = double.Parse(tb_uglok.Text);
                  sum[6] = double.Parse(tb_azdi.Text);
                  sum[7] = double.Parse(tb_form.Text);
                  sum[8] = double.Parse(tb_etben.Text);
                  sum[9] = double.Parse(tb_andser.Text);
                  sum[10] = double.Parse(tb_serv.Text);
                  sum[11] = double.Parse(tb_benz.Text);
                  sum[12] = double.Parse(tb_fen.Text);
              summ = 0;
 
                for (i = 0; i <= 12; i++)
                {
                    summ += sum[i];
                    if (i > 11)
                    {
                        listBox1.Items.Add(string.Format("Summ={0}", summ));
                    }
Добавлено через 16 минут
Проблема решена поставил значение text 0. Теперь он по умолчанию ставит 0 значение и тем самым программа работает коректно
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.02.2015, 17:59
Ответы с готовыми решениями:

Ввод количества итераций через textBox, вывод в listBox, и график в Chart
Доброго дня. Прошу помощи в вводе количества итераций через textBox, выводе через listBox, и...

Вывод данных из XML в TextBox через ListBox
Всё хорошо работает но есть пару но... Как сделать что бы при выборе элемента из listbox данные из...

Написать программу, осуществив ввод одномерного массива через TextBox, а вывод результатов в Label
В одномерном массиве, состоящем из n вещественных элементов, вычислить: 1) номер и величину...

Поиск в ListBox через TextBox
Всем привет! Есть такая задача, у нас есть в Форме: 4 ListBox с данными, 1 Textbox, Button...

7
2080 / 1238 / 464
Регистрация: 20.12.2014
Сообщений: 3,237
23.02.2015, 18:08 2
13 - потому что у вас тринадцать текстбоксов. Уберете один - сможете сделать размерность массива -12.
Уберите if - он не нужен.
Попробуйте заменить double.Parse на Convert.ToDouble.
Если с числами работает, значит, возможно, проблема в именах текстбоксов. Попробуйте поставить 13 новых и не меняйте имена: пусть в коде будут textBox1.Text и т. д. Проверьте, если будет работать - значит проблема в этом.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int i;
double summ;
double[] sum = new double[13];
sum[0] = Convert.ToDouble(tb_met.Text); 
sum[1] = Convert.ToDouble(tb_ugld.Text);
sum[2] = Convert.ToDouble(tb_tol.Text);
sum[3] = Convert.ToDouble(tb_am.Text);
sum[4] = Convert.ToDouble(tb_ksi.Text);
sum[5] = Convert.ToDouble(tb_uglok.Text);
sum[6] = Convert.ToDouble(tb_azdi.Text);
sum[7] = Convert.ToDouble(tb_form.Text);
sum[8] = Convert.ToDouble(tb_etben.Text);
sum[9] = Convert.ToDouble(tb_andser.Text);
sum[10] = Convert.ToDouble(tb_serv.Text);
sum[11] = Convert.ToDouble(tb_benz.Text);
sum[12] = Convert.ToDouble(tb_fen.Text);
summ = 0;
for (i = 0; i <= 12; i++)
{
    summ += sum[i];
}
listBox1.Items.Add(string.Format("Summ={0}", summ));
0
0 / 0 / 0
Регистрация: 23.02.2015
Сообщений: 6
23.02.2015, 18:49  [ТС] 3
Ну if нужен для того что бы сумма конечная была, а то он выдаст 13 значении с разными числами ;
13 новых textBox не помогли. И Convert.ToDouble не меняет данной ситуации.
И разве цикл не считываеться по порядку 0,1,2,3,4...12 ,то есть 13 textBoxs?
0
2080 / 1238 / 464
Регистрация: 20.12.2014
Сообщений: 3,237
23.02.2015, 19:00 4
Цитата Сообщение от DarkSinner Посмотреть сообщение
Ну if нужен для того что бы сумма конечная была, а то он выдаст 13 значении с разными числами
Не выдаст (в моем коде). Цикл заканчивается на 21 строке. И в листбокс пойдет конечный результат.
Цикл считывается по порядку с 0 до 12.
0
Заблокирован
23.02.2015, 19:34 5
DarkSinner, если вам нужно посчитать сумму значений во всех текстбоксах, то можно сделать проще:

C#
1
2
3
4
5
6
7
            listBox1.Items.Add(string.Format("Сумма = {0}",
                 Controls.OfType<TextBox>() //выбираем из всех элементов формы только textBox
                .Select(x => x.Text)//получаем введенный текст
                .Where(x => !string.IsNullOrWhiteSpace(x))//проверяем, что строка не пустая
                .Select(x => double.Parse(x))//преобразовываем строку в число
                .Sum()//суммируем
                ));
можно записать немного короче, но я решил рассписать, чтобы было более понятно.
0
0 / 0 / 0
Регистрация: 23.02.2015
Сообщений: 6
23.02.2015, 20:22  [ТС] 6
Ev_Hyper Спасибо, но мне не надо суму всех текс боксов мне надо сумму определённых.
0
Заблокирован
23.02.2015, 21:12 7
DarkSinner, в таком случае можно использовать точно такой-же код, только добавить строчку отбора п критерию (например, те, чьи названия начинаются с: "tb_".
C#
1
2
3
4
5
6
7
8
            listBox1.Items.Add(string.Format("Сумма = {0}",
                Controls.OfType<TextBox>() //выбираем из всех элементов формы только textBox
                .Where(x => x.Name.StartsWith("tb_")) //условие отбора
                .Select(x => x.Text)//получаем введенный текст
                .Where(x => !string.IsNullOrWhiteSpace(x))//проверяем, что строка не пустая
                .Select(x => double.Parse(x))//преобразовываем строку в число
                .Sum()//суммируем
                ));
Или сгруппировать текстбоксы в один groupBox или другой группирующий элемент управления
C#
1
2
3
4
5
6
7
            listBox1.Items.Add(string.Format("Сумма = {0}",
                 groupBox1.Controls.OfType<TextBox>() //выбираем из всех элементов groupBox1 только textBox
                .Select(x => x.Text)//получаем введенный текст
                .Where(x => !string.IsNullOrWhiteSpace(x))//проверяем, что строка не пустая
                .Select(x => double.Parse(x))//преобразовываем строку в число
                .Sum()//суммируем
                ));
как видите вариантов может быть много, но изменения в коде происходит всего в 1 строчке!
0
0 / 0 / 0
Регистрация: 23.02.2015
Сообщений: 6
24.02.2015, 09:06  [ТС] 8
Ev_Hyper Спасибо воспользовался с условием отбора, а с группбоксом взял на заметку.
А не подскажите как вернуть быстрые клавиши ctrl +c , ctrl +v, ctrl +x.
А то заблочил и не знаю как вернуть.
кейпресс
C#
1
2
3
4
5
 char ch = e.KeyChar;
            if (!Char.IsDigit(ch) && ch != ',' && ch != 8)
            {
                e.Handled = true;
            }
0
24.02.2015, 09:06
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.02.2015, 09:06
Помогаю со студенческими работами здесь

Заполнение ListBox через TextBox
Здравствуйте. Помогите, пожалуйста. Есть форма, нак оторой 2 ListBox'a, TextBox и кнопка. Нужно,...

Поиск в ListBox через TextBox
Всем привет! Как сделать так чтобы при запуске словаря можно было выбором из ListBox сразу...

Фильтрация записей в Listbox через Textbox ()
Ребята помогите решить задачу Суть такая : Есть форма Userform_FIND на ней Listbox_FIND ( ...

Ввод данных в БД через textbox
Всем привет,есть таблица (card) в ней 4 поля (фамилия,имя,отчество,контактные данные) и есть 4...


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

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