首页 > 解决方案 > 使用 int 和 float 中的字符串进行类型转换的问题

问题描述

我是 monodevelop 的初学者,我尝试制作一个简单的计算器,但我对进行类型转换的等号按钮有疑问。所以我的类型转换有问题。

我有 2 个变量,其中包含方程式 2 部分的字符串,我想将它们转换为类型(int 或 float)的函数,我试图打印不同的变量,但这样做没有成功。

using System;
using Gtk;

public partial class MainWindow : Gtk.Window
{
    private string operationSigne;
    private string membre1;
    private string membre2;

    public MainWindow() : base(Gtk.WindowType.Toplevel) => Build();

    protected void OnDeleteEvent(object sender, DeleteEventArgs a)
    {
        Application.Quit();
        a.RetVal = true;
    }

    protected void OnBtnClicked(object sender, EventArgs e)
    {
        entry1.Text = entry1.Text + "0";
    }

    protected void OnBtnPtClicked(object sender, EventArgs e)
    {
        if (!entry1.Text.Contains("."))
        {
            entry1.Text = entry1.Text + ".";
        }
    }

    protected void OnBtnEgaleClicked(object sender, EventArgs e)
    {
        this.membre2 = entry1.Text;
        if (this.operationSigne.Equals("+"))
        {
            if (this.membre1.Contains(".") || this.membre2.Contains("."))
            {
                entry1.Text = (float.Parse(this.membre1) + float.Parse(this.membre2)).ToString();
            }
            else
            {
                entry1.Text = (int.Parse(this.membre1) + int.Parse(this.membre2)).ToString();
            }
        }
        else if (this.operationSigne.Equals("-"))
        {
            if (this.membre1.Contains(".") || this.membre2.Contains("."))
            {
                entry1.Text = (float.Parse(this.membre1) - float.Parse(this.membre2)).ToString();
            }
            else
            {
                entry1.Text = (int.Parse(this.membre1) - int.Parse(this.membre2)).ToString();
            }
        }
        else if (this.operationSigne.Equals("/"))
        {
            if (this.membre1.Contains(".") || this.membre2.Contains("."))
            {
                entry1.Text = (float.Parse(this.membre1) / float.Parse(this.membre2)).ToString();
            }
            else
            {
                entry1.Text = (int.Parse(this.membre1) / int.Parse(this.membre2)).ToString();
            }
        }
        else
        {
            if (this.membre1.Contains(".") || this.membre2.Contains("."))
            {
                entry1.Text = (float.Parse(this.membre1) * float.Parse(this.membre2)).ToString();
            }
            else
            {
                entry1.Text = (int.Parse(this.membre1) * int.Parse(this.membre2)).ToString();
            }
        }
    }


    protected void OnBtnPlusClicked(object sender, EventArgs e)
    {
        this.membre1 = entry1.Text;
        this.operationSigne = "+";
        entry1.Text = "";
    }

    protected void OnBtn3Clicked(object sender, EventArgs e)
    {
        entry1.Text = entry1.Text + "3";
    }

    protected void OnBtn2Clicked(object sender, EventArgs e)
    {
        entry1.Text = entry1.Text + "2";
    }

    protected void OnBtn1Clicked(object sender, EventArgs e)
    {
        entry1.Text = entry1.Text + "1";
    }

    protected void OnBtn4Clicked(object sender, EventArgs e)
    {
        entry1.Text = entry1.Text + "4";
    }

    protected void OnBtn5Clicked(object sender, EventArgs e)
    {
        entry1.Text = entry1.Text + "5";
    }

    protected void OnBtn6Clicked(object sender, EventArgs e)
    {
        entry1.Text = entry1.Text + "6";
    }

    protected void OnBtnFoisClicked(object sender, EventArgs e)
    {
        this.membre1 = entry1.Text;
        this.operationSigne = "x";
        entry1.Text = "";
    }

    protected void OnBtnDivClicked(object sender, EventArgs e)
    {
        this.membre1 = entry1.Text;
        this.operationSigne = "/";
        entry1.Text = "";
    }

    protected void OnBtn9Clicked(object sender, EventArgs e)
    {
        entry1.Text = entry1.Text + "9";
    }

    protected void OnBtn8Clicked(object sender, EventArgs e)
    {
        entry1.Text = entry1.Text + "8";
    }

    protected void OnBtn7Clicked(object sender, EventArgs e)
    {
        entry1.Text = entry1.Text + "7";
    }

    protected void OnBtnCClicked(object sender, EventArgs e)
    {

    }

    protected void OnBtnViderClicked(object sender, EventArgs e)
    {
        entry1.Text = "";
        this.membre1 = "";
        this.membre2 = "";
    }

    protected void OnButtonMoinsClicked(object sender, EventArgs e)
    {
        this.membre1 = entry1.Text;
        this.operationSigne = "-";
        entry1.Text = "";
    }
}

这是我所有的代码,我认为问题来自函数 OnBtnEgaleClicked。

我希望该操作适用于一个 int 和一个 float、2 个 float 或两个 int。实际上,2 int 有效,但其他无效,应用程序崩溃。

标签: c#stringtype-conversion

解决方案


推荐阅读