manoharnch Ответов: 5

как сложить два числа в c#


Привет, я работаю над оконным приложением c# .net

я не могу сложить два числа

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace Add
{
    public partial class calci : Form
    {
        public calci()
        {
            InitializeComponent();
        }

        private void But_Add_Click(object sender, EventArgs e)
        {
          int a = Convert.ToInt32(Txt_1.Text );
          int b = Convert.ToInt32(Txt_2.Text);

            Ans.Text = a + b;
           

        }

    }
}


[edit]добавлен блок кода - OriginalGriff[/edit]

Emre Ataseven

Вам нужно прочитать книгу C# для начинающих, прежде чем начать писать код, слепое кодирование-это не очень хороший способ улучшить себя.

5 Ответов

Рейтинг:
36

OriginalGriff

Все будет зависеть от того, что ваш пользователь вводит в текстовые поля. Если он наберет несколько недопустимых символов, то этот код не будет работать. Вам также нужно преобразовать свой номер в строку, чтобы отобразить его!
Попробовать это:

private void butAdd_Click(object sender, EventArgs e)
    {
    int a;
    int b;
    if (!int.TryParse(tbFirstNumber.Text, out a))
        {
        MessageBox.Show("I need just a number in the first box!");
        return;
        }
    if (!int.TryParse(tbSecondNumber.Text, out b))
        {
        MessageBox.Show("I need just a number in the second box!");
        return;
        }
    labAnswer.Text = (a + b).ToString();
    }


Reiss

Это работает для ints - ОП упомянул номера, хотя код показывает, что он пытается сделать это с помощью ints, поэтому, возможно, потребуется использовать Double.TryParse метод

OriginalGriff

Правда - но так как он новичок и упомянул ИНЦ, я просто пошел с темой! :смеяться:

Рейтинг:
1

CPallini

Как вы легко можете найти в документация[^], Convert.ToInt32 метод может выдавать исключения, следовательно, вы, как мудрый разработчик, должны обрабатывать в своем коде такую возможность. См. пример кода в документации.


Рейтинг:
1

lw@zi

Существует элемент управления NumericUpDown для Windows forms. Взгляните на это. Это избавит вас от накладных расходов, таких как конвертация и валидация.


Рейтинг:
0

amolpatil2243

Если вы сначала преобразуете значения в целое число, то вам нужно сохранить выходные значения в самом integer, а затем присвоить их текстовому полю. это будет прекрасно

int c = a + b;

Ans.Text = c.ToString();


Рейтинг:
0

JP_Rocks

Если я изменю ваш код, это должно сработать:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace Add
{
    public partial class calci : Form
    {
        public calci()
        {
            InitializeComponent();
        }

        private void But_Add_Click(object sender, EventArgs e)
        {
          int a = Convert.ToInt32(Txt_1.Text );
          int b = Convert.ToInt32(Txt_2.Text);
          int c = a + b;
          Ans.Text =  c.ToString();
        }

    }
}

Единственное изменение, которое вам нужно сделать, это:
1) проверьте, не вводятся ли числа, и выбросьте исключение
2) преобразуйте добавленные числа в строку для назначения текстовому полю. Я хотел бы взять третью переменную "с", чтобы это выглядело хорошо.


[no name]

*спам отредактирован*