![](/img/trans.png)
[英]Input string was not in a correct format, “double.parse(textbox.text);”
[英]Input string was not in a correct format in double.Parse
我是C#的新手。 我正在嘗試制作計算器,但發生了以下錯誤:
輸入字符串的格式不正確。
這是代碼的摘要:
double num1, num2, result;
private void button14_Click(object sender, EventArgs e)
{
num1 = Convert.ToDouble(textBox1.Text);
textBox1.Text = String.Empty;
num2 = double.Parse(textBox1.Text); **//ERROR OCCURED HERE**
result = num1 - num2;
}
private void button13_Click(object sender, EventArgs e)
{
num1 = Convert.ToDouble(textBox1.Text);
textBox1.Text = String.Empty;
num2 = System.Double.Parse(textBox1.Text); **//ERROR OCCURED HERE**
result = num1 + num2;
}
如何將字符串轉換為double類型?
還要記住,Parse方法依賴於操作系統的文化來執行轉換,因此請嘗試將代碼更改為
num2 = double.Parse(textBox1.Text, CultureInfo.InvariantCulture);
您也可以考慮使用
double.TryParse
更好的異常處理方法。
你想用這段代碼實現什么目標? 你的algorythm似乎是錯誤的。
像其他人說的,這段代碼
textBox1.Text = String.Empty;
num2 = double.Parse(textBox1.Text);
將拋出異常,因為空字符串無法轉換為Double!
所以,我想知道你為什么重置你的領域。 我想了一會兒,也許我得到了你想做的事情。 假設您在TextBox1中鍵入一個數字。 然后按“ - ”按鈕減去,然后輸入第二個數字以查看結果。 是這樣的嗎? 如果是,您編寫的代碼不會等待您的下一次輸入!
實際上,當您單擊按鈕時,它只會執行您編寫的所有行。 我會寫這樣的東西。
double num1, num2, result;
string operation;
private void button14_Click(object sender, EventArgs e) //Minus Button
{
if (textBox1.Text != String.Empty) //Added if statement to see if the textBox is empty
num1 = Convert.ToDouble(textBox1.Text);
else
num1 = 0; //If textBox is empty, set num1 to 0
textBox1.Text = String.Empty;
operation = "-";
}
private void button13_Click(object sender, EventArgs e) //Equals Button
{
if (textBox1.Text != String.Empty)
num2 = Convert.ToDouble(textBox1.Text);
else
num2 = 0;
if (operation == "-")
{
result = num1 - num2;
textBox1.Text = Convert.ToString(result);
}
if (operation == "+")
{
//You got it
}
//And so on...
}
編輯:如果字符串為空,這將始終拋出異常,所以我添加了一個控件。 如果字符串為空,則值變為零。
由於您已清除上一行的文本框,因此Parse轉換失敗。
textBox1.Text = String.Empty;
num2 = double.Parse(textBox1.Text);
它如何將String.Empty轉換為Double? 這樣做的方式是不對的。 例如,如果單擊“+”按鈕,則必須檢查是否已存在數字。 如果是這樣,添加數字並顯示結果:
Double num;
private void Add_Click(object sender, EventArgs e)
{
If (num != null)
{
num == num + Convert.ToDouble(textBox1.Text);
}
else
{
num1 == Convert.ToDouble(textBox1.Text);
}
textBox1.Text = num;
}
似乎應該從textbox2
而不是textbox1
獲取num2
值(您將textbox1.text設置為空並嘗試將其解析為再次加倍)
//You are setting textbox1 to empty
textBox1.Text = String.Empty;
//here trying to parse it to double
num2 = double.Parse(textBox1.Text);
也不要直接使用Convert.ToDouble(textBox1.Text)
。 如果用戶鍵入非數字值,您的代碼將崩潰。 首先檢查它是否是有效數字,始終使用doube.TryPrase()
double num1;
double.TryParse(textBox1.Text, out num1);
您的代碼似乎很難理解使用button_13和button_14;
我會假設你試圖這樣做:
bool ifNew = true;
double num1 ,num2,result;
private void Add_Click(object sender, EventArgs e))
{
if(ifNew)
{
num1 = Convert.ToDouble(textBox1.Text);
textbox1.Clear();
ifNew = false;
result += num1;
}
else
{
num2 = Convert.ToDouble(textBox1.Text);
textbox1.Clear();
result += num2;
num1 = 0D;
num2 = 0D;
ifNew = true;
}
}
private void Equals_Click(object sender, EventArgs e)
{
textboxl.Text = string.Format("{0:N}",result);
}
或者你可以在我的Convert.ToDouble中使用Double.Parse它取決於你的操作,但我可視化如何做添加操作你可以改變和編輯這取決於你的操作
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.