无法添加整数

时间:2014-02-03 22:29:33

标签: c# calculator

好的,我是C#的新手,我想要添加两个用户输入到文本框中的值。这是我的代码,我收到“val1 + val2”的错误。如何添加这些值?我真的很抱歉,如果之前有人询问,但我已经找到了答案,我根本找不到答案。谢谢:)。

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 Csharp_Calculator
{

    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void buttonAdd_Click(object sender, EventArgs e)
        {
            int val1 = Convert.ToInt32(textBox1.Text);
            int val2 = Convert.ToInt32(textBox2.Text);
            textBoxAns.Text = val1 + val2;
        }

        private void buttonSub_Click(object sender, EventArgs e)
        {
            int val1 = Convert.ToInt32(textBox1.Text);
            int val2 = Convert.ToInt32(textBox2.Text);
            textBoxAns.Text = val1 + val2;
        }

        private void buttonDivide_Click(object sender, EventArgs e)
        {
            int val1 = Convert.ToInt32(textBox1.Text);
            int val2 = Convert.ToInt32(textBox2.Text);
            textBoxAns.Text = val1 + val2;
        }

        private void buttonRefresh_Click(object sender, EventArgs e)
        {
            textBox1.Text = "";
            textBox2.Text = "";
            textBoxAns.Text = "";
        }
    }
}

4 个答案:

答案 0 :(得分:6)

尝试这样的事情:

textBoxAns.Text = (val1 + val2).ToString();

答案 1 :(得分:5)

textBoxAns.Text = (val1 + val2).ToString();

通常在C#中,你不能隐式地将数字转换为string,所以只需将括号括起来然后先进行计算,然后将结果作为字符串。

答案 2 :(得分:3)

val1 + val2的总和是一个整数。要解决这个问题,您必须将总和转换为文本框可读的内容,所以:

textBoxAns.Text = Convert.ToString(val1 + val2);

有些程序员也喜欢int.ToString。在这种情况下,只需:

textBoxAns.Text = (val1 + val2).ToString();

答案 3 :(得分:2)

正如大家已经说过的那样,你的问题发生了,因为你试图为字符串属性(TextBoxAns.Text)分配添加两个整数(另一个整数)的结果,而没有正确的C#语言就不允许这样做转换。
但是没有人指出你的注意力在你的代码中的另一个大问题。

如果用户未在文本框中键入数字,会发生什么情况? 如果用户要求除法并在textBox2.Text中键入零,会发生什么?

在这两种情况下,您的代码都会崩溃,因为在第一种情况下,Convert.ToInt32无法处理数字字符串,在第二种情况下,您会得到除以零的代码。

处理用户输入时需要小心.... 正确的方法是使用Int32.TryParse方法,如以下示例中的分割按钮

   private void buttonDivide_Click(object sender, EventArgs e)
   {
        int val1;
        int val2;

        if(!Int32.TryParse(textBox1.Text, out val1))
        {
             MessageBox.Show("Please type a valid number!");
             return;
        }
        if(!Int32.TryParse(textBox2.Text, out val2))
        {
             MessageBox.Show("Please type a valid number!");
             return;
        }
        if(val2 == 0)
        {
             MessageBox.Show("Cannot divide by zero!");
             return;
        }
        textBoxAns.Text = (val1 / val2).ToString();

        // The line above is an integer division, without decimals returned.
        // If you want a floating point result then you need
        textBoxAns.Text = (Convert.ToDouble(val1) / val2).ToString();

   }