簡體   English   中英

double.Parse中的輸入字符串格式不正確

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM