簡體   English   中英

按Enter鍵時出現C#錯誤-程序崩潰

[英]C# Error when pressing the Enter key - program crashes

我愚蠢地關閉了一個我認為最近已經回答的問題,但是我遇到了另一個問題。

在沒有輸入字符的情況下按Enter鍵時,我的代碼崩潰。 有辦法防止這種情況嗎? 如果用戶輸入了錯誤的字符,該錯誤消息將起作用,但是如果在沒有放置任何輸入的情況下按下Enter鍵,則該消息將崩潰。

我收到的錯誤消息是mscorlib.dll中發生了'System.FormatException'類型的未處理異常。其他信息:字符串必須恰好是一個字符長。

這是我的代碼:

 using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; namespace computerPackage { class Program { static void Main(string[] args) { char computerPackage; const decimal DELUXE_PACKAGE = 1500; const decimal SUPER_PACKAGE = 1700; Console.Write("Input the Computer Package D or S: "); computerPackage = Char.Parse(Console.ReadLine()); computerPackage = Char.ToUpper(computerPackage); if (computerPackage == 'D') { Console.WriteLine("Cost of Deluxe Computer Package is " + DELUXE_PACKAGE.ToString("C")); } else if (computerPackage == 'S') { Console.WriteLine("Cost of Deluxe Computer Package is " + SUPER_PACKAGE.ToString("C")); } else { Console.WriteLine("Package D or S not entered"); } Console.WriteLine("Press any key to continue..."); Console.ReadKey(); // pause } } } 

在您按Enter鍵且沒有任何字符后,您的程序將嘗試解析一個空字符串,這是不可能的,並且會給出異常。 像這樣解析之前創建檢查

    static void Main(string[] args)
    {
        char computerPackage;
        const decimal DELUXE_PACKAGE = 1500;
        const decimal SUPER_PACKAGE = 1700;
        Console.Write("Input the Computer Package D or S: ");
        string inp = Console.ReadLine();
        if (inp.Length==1)
        {
            computerPackage = Char.Parse(inp);
            computerPackage = Char.ToUpper(computerPackage);
            if (computerPackage == 'D')
            {
                Console.WriteLine("Cost of Deluxe Computer Package is " + DELUXE_PACKAGE.ToString("C"));
            }
            else if (computerPackage == 'S')
            {
                Console.WriteLine("Cost of Deluxe Computer Package is " +
                SUPER_PACKAGE.ToString("C"));
            }
            else
            {
                Console.WriteLine("Package D or S not entered");
            }
            Console.WriteLine("Press any key to continue...");
            Console.ReadKey();
        }
        else
            {
                Console.WriteLine("Package D or S not entered");
            }
            Console.WriteLine("Press any key to continue...");
            Console.ReadKey();

    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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