c# - 使用 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 有效,但其他无效,应用程序崩溃。
解决方案
推荐阅读
- javascript - 如何从从 index.html 导入的 Javascript 脚本中访问全局变量和函数并在组件中使用它们?
- python - 如何在计算元素时向熊猫数据框添加新列?
- java - 如何将对象的 ArrayList 实现为 RecyclerView ViewHolder 中的视图?
- google-apps-script - 找不到方法 getRange(number,number)?
- javascript - 如何使用 sjcl.hash.sha256.hash 对文件内容执行 sha256 哈希?
- querydsl - QueryDSL中如何通过关系构造多个内连接——参考中间表
- ubuntu - 我不能在 kubuntu 18 下安装 ttf-mscorefonts
- python - 我如何使用 scipy 优化来优化我的成本逻辑回归成本函数?
- python - JSON 或 Python dict/list 解码问题
- c# - 来自 Web API 的正确返回类型