0 / 0 / 0
Регистрация: 25.01.2015
Сообщений: 12
1

Модернизация калькулятора

02.01.2018, 21:55. Показов 2125. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем я только начал изучать C#, и по этому много не понимаю. Решил я начать с калькулятора. Код просто переписал с видео на ютубе. И вообщем вопрос. У меня при пустом textbox1 при нажатие на любой из символов '+', '-', '/', '*' выходит какая то ошибка мол формат не тот. А мне нужно как и в обычном калькуляторе, при нажатие этих символов нечего не происходило в том случаи если textbox чист. Как это сделать? Ну или может есть у кого исходник навороченного калькулятора на C#.

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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace Calculator2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            textBox1.Text += (sender as Button).Text;
        }
 
        double a = 0, b = 0, c = 0;
 
        private void button12_Click(object sender, EventArgs e)
        {
            b = Convert.ToDouble(textBox1.Text);
 
            switch (znak)
            {
                case '+' : c = a + b;
                    break;
                case '-': c = a - b;
                    break;
                case '*': c = a * b;
                    break;
                case '/': c = a / b;
                    break;
            }
 
            textBox1.Text = c.ToString();
        }
 
        private void button18_Click(object sender, EventArgs e)
        {
            textBox1.Clear();
        }
 
        private void button17_Click(object sender, EventArgs e)
        {
            if (textBox1.Text != "")
                if (textBox1.Text[0] == '-')
                    textBox1.Text = textBox1.Text.Remove(0, 1);
                else
                    textBox1.Text = '-' + textBox1.Text;
        }
 
        private void button19_Click(object sender, EventArgs e)
        {
            if (textBox1.Text != "")
                textBox1.Text = textBox1.Text.Remove(textBox1.Text.Length -1, 1);
        }
 
        char znak;
 
        private void button15_Click(object sender, EventArgs e)
        {
            a = Convert.ToDouble(textBox1.Text);
            znak = (sender as Button).Text[0];
            textBox1.Clear();
            
            if (a == '+' || a == '-' || a == '*' || a == '/')
            {
                
            }
               
        }
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.01.2018, 21:55
Ответы с готовыми решениями:

Модернизация класса BitArray
Доброго времени суток. Кто работал с битовыми массивами, тот знает что такое етот клас и то что он...

Модернизация вывода данных в Excel из DataGridView
Всем, привет. Есть процедура по выводу данных в Excel из DataGriedView. Система падает при запуске...

Доработка калькулятора
Здравствуйте! Все работает, но не могу реализовать вычисление процентов. using System; using...

Написание калькулятора
Возьмём стандартный калькулятор Windows. Там, где отображаются введённые нами цифры и операции -...

13
910 / 795 / 329
Регистрация: 08.02.2014
Сообщений: 2,391
03.01.2018, 09:59 2
Отладчик в руки и вперёд, ищешь где ошибка, и потом читаешь про обработку исключений.
0
0 / 0 / 0
Регистрация: 25.01.2015
Сообщений: 12
03.01.2018, 10:04  [ТС] 3
сама программа запускается и работает. Но когда нажимаю на символы то выходит ошибка что это не в том формате. Мне нужно сделать проверку на то что если textbox чист то при нажатии кнопки символа нечего не происходило.
0
Эксперт .NET
11479 / 7822 / 1192
Регистрация: 21.01.2016
Сообщений: 29,327
03.01.2018, 11:09 4
Skofield, ну так сделай, что мешает?
0
0 / 0 / 0
Регистрация: 25.01.2015
Сообщений: 12
03.01.2018, 12:07  [ТС] 5
К примеру вот, я сделал это на кнопке +. но все равно когда нажимаю + выводит ошибку

Если в textbox1 пуст или в textbox есть символ + то должно появится "нечего". иначе в textbox появится первый символ в параметре Text.

C#
1
2
3
4
5
6
7
8
9
10
 if (textBox1.Text == "" && Convert.ToChar(textBox1.Text) == '+')
            {
                textBox1.Text = "";
            }
                else
            {
                a = Convert.ToDouble(textBox1.Text);
                znak = (sender as Button).Text[0];
                textBox1.Clear();
            }
0
910 / 795 / 329
Регистрация: 08.02.2014
Сообщений: 2,391
03.01.2018, 12:20 6
Лучший ответ Сообщение было отмечено Skofield как решение

Решение

Skofield, Ваше условие читается: если в текстбоксе ничего нету И это ничего равно +, то задаём текстбоксу пустую строку
1
0 / 0 / 0
Регистрация: 25.01.2015
Сообщений: 12
03.01.2018, 12:39  [ТС] 7
SeIZVeIZ, Урраааа получилось!!!))))))

Добавлено через 12 минут
Но теперь когда я собираюсь делить, умножать, сложить или вычитать числа после запятой оно выдает ошибку и указывает на мой введенный код. Как это исправить?

Добавлено через 3 минуты
и еще цифры более одного символа не могу производить вычисления вылетает с ошибкой пример: хочу 22 - 1 а оно уже вылетает после нажатия -.
0
910 / 795 / 329
Регистрация: 08.02.2014
Сообщений: 2,391
03.01.2018, 13:31 8
1) у ошибок есть описание, экстрасенсорика в новый год не пришла
2) после какой запятой?
3) где вылетает? (см п.1)
0
0 / 0 / 0
Регистрация: 25.01.2015
Сообщений: 12
03.01.2018, 13:49  [ТС] 9
набираю 22 нажимаю плюс и вылетает с ошибкой
System.FormatException: "Длина строки должна составлять один знак."
набираю 1,2 нажимаю плюс и вылетает с ошибкой
System.FormatException: "Длина строки должна составлять один знак."


и выводит вот на этот код

C#
1
2
3
4
5
6
7
8
9
10
if (textBox1.Text == "" || Convert.ToChar(textBox1.Text) == '+')
            {
                textBox1.Text = "";
            }
                else
            {
                a = Convert.ToDouble(textBox1.Text);
                znak = (sender as Button).Text[0];
                textBox1.Clear();
            }
0
910 / 795 / 329
Регистрация: 08.02.2014
Сообщений: 2,391
03.01.2018, 14:12 10
документацию по методу который вы используете смотреть не пытались?

Добавлено через 4 минуты
Как по-вашему должна повести себя программа на Convert.ToChar когда у текстбокса значение 22 + ?
0
0 / 0 / 0
Регистрация: 25.01.2015
Сообщений: 12
03.01.2018, 14:43  [ТС] 11
но там же стоит if нажимается кнопка программа начинает проверять textbox1.Text не равняется пустой строке, дальше проверяет на то что есть ли символ + нету символа переходим к else
0
910 / 795 / 329
Регистрация: 08.02.2014
Сообщений: 2,391
03.01.2018, 14:55 12
Skofield, прочитай внимательно второй мой вопрос
0
0 / 0 / 0
Регистрация: 25.01.2015
Сообщений: 12
03.01.2018, 14:57  [ТС] 13
И как сделать чтобы добавлялся лишь один символ. К примеру я нажимаю на запятую и оно добавляется столько раз сколько нажму а мен нужно чтобы запятая добавлялась только один раз
0
910 / 795 / 329
Регистрация: 08.02.2014
Сообщений: 2,391
03.01.2018, 15:07 14
Лучший ответ Сообщение было отмечено Skofield как решение

Решение

подписываешься на TextChanged (вроде так называется) событие у текстбокса. и там делаешь нужные тебе проверки, чтобы вводилось только то что тебе нужно, ну или кнопками своими, хозяин барин. Код вы пишите и Вам решать как всё будет работать

Добавлено через 1 минуту
Однако Convert.ToChar можно подать в виде строки только 1 символ, если подадите больше то будет ошибка как вы писали выше, к строке в текстбоксе можно обратиться по индексу получим 1 нужный символ (например последний)
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.01.2018, 15:07
Помогаю со студенческими работами здесь

Аналог калькулятора Windows на C#
Доброго времени суток. Недавно сел за начальные этапы кодинга на C# и решил написать свой...

Поле вода калькулятора
Как сделать чтобы в строке у калькулятора,если мы вводим первым символом ",",то перед запятой...

Создание консольного калькулятора
Товарищи!:) Помоги пожалуйста несчастной студентке)) Мне нужно создать простой консольный...

Создание простого калькулятора
Необходимо сделать калькулятор ,c тремя арифметическими операциями,где вид операции указывается в...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru