none
NET 輸入字串格式錯誤 RRS feed

  • 問題

  •   private void button1_Click(object sender, EventArgs e)
            {
                {
                    string str;
                    int money = Convert.ToInt32(label2.Text);
                    int tax = 0;
                    if (radioButton1.Checked)
                    {
                        tax = money + 5980;
                        if (radioButton2.Checked == true)
                        {
                            tax = money + 4980;
                            if (radioButton3.Checked == true)
                            {
                                tax = money + 2980;
                                if (checkBox1.Checked == true)

    請幫我看一下 從int money那一行開始,系統就顯示System.FormatException: '輸入字串格式不正確。

    以下的程式碼都打好且偵錯無誤,但是就是這個問題導致執行時就會跳回程式碼。

    2019年10月26日 下午 01:14

所有回覆

  • 從錯誤訊息判斷是 label2.Text 內容不為數字

    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    2019年10月26日 下午 03:16
  • 您可以考慮使用int.TryParse函式防範FormatException錯誤, 請參考:

    [C#] Parse和TryParse的差異和用法

    2019年10月26日 下午 11:31
  • 我是覺得,你若不想回答,認為我的問法不精確,可以不用發這廢文浪費你我時間,我是來求個提示或是解決方案,不是聽你說教。
    2019年10月27日 上午 08:39
  • 謝謝您,我發現我的錯誤了,也長點知識了,謝謝~~~
    2019年10月27日 上午 08:40
  • 我是覺得,你若不想回答,認為我的問法不精確,可以不用發這廢文浪費你我時間,我是來求個提示或是解決方案,不是聽你說教。
    呃, 其實橫線下的那段話是他的簽名檔,每篇文章都有,並非針對個人。

    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。 https://skilltree.my/

    2019年10月27日 下午 05:19
  • 這邊延續tihs大大方式做小補充

    舉例:

    使用者不小心在100金額後多輸入$,假如使用TryParse沒有加上判斷,money的值會是0而不是100

    var label2Text = "100$";
    int.TryParse(label2Text, out int money) //Money = 0

    建議還是做好驗證動作

    var label2Text = "100$";
    if (!int.TryParse(label2Text, out int money))
        //提示使用者 : 輸入資料不是數字,麻煩修正

    最後錢建議使用decimal而不是int

    	var label2Text = "100$";
    	if (!decimal.TryParse(label2Text, out var money))
    		//提示使用者 : 輸入資料不是數字,麻煩修正


    • 已編輯 ITWeiHan 2019年10月28日 上午 02:40
    2019年10月28日 上午 02:33
  • 建議在執行轉型態前,先判斷一下資料型態是否正確可轉

    小喵之前寫VB.NET是使用IsNumeric這個內建的Function來檢查
    C#好像沒有這個function,但可以自己弄一個

    public bool IsNumeric(string value)
    {
        return value.All(char.IsNumber);
    }

    if IsNumeric(label2.Text){
    	int money = Convert.ToInt32(label2.Text);
    	int tax = 0;
    	if (radioButton1.Checked)
    	{
    		tax = money + 5980;
    	//以下略過
    	}
    }
    


    topcat(姍舞之間的極度凝聚)
    http://www.dotblogs.com.tw/topcat
    世界上有兩樣東西分享給別人後,不但不會變少,還會變更多:
    一個是快樂,另一個是知識~ 分享...是知識累積的開始...

    2019年10月28日 上午 04:18
    版主