如何使代码在按下回车键时不会中断?

huangapple go评论62阅读模式
英文:

how to make the code not break when the enter key is pressed?

问题

现在,我正在学习C#,并且正在制作一个控制台程序,用于销售水果。借助循环的帮助,我使得如果一个人输入非数字,则循环重新开始。但是事实证明,如果我什么都不输入,只是按回车键,我的代码会出现错误。在这种情况下,我应该怎么办?我该如何更改代码?

// 主要方法
public static void Main()
{
    // 购买
    float kg = 1000;
    string bananas;
    float BananaKgPrice = 1.69f;
    float bananaWeight = 200;
    float WatermelonKgPrice = 3.29f;
    double price;
    string BuyChoice;

    Console.WriteLine("欢迎光临我们的商店!我们销售香蕉和西瓜。");
    Console.WriteLine($"一公斤香蕉售价{BananaKgPrice}欧元,一公斤西瓜售价{WatermelonKgPrice}欧元");
    bool loopBreakBuyChoice = true;
    while (loopBreakBuyChoice)
    {
        Console.WriteLine("您想购买什么?1 - 香蕉,2 - 西瓜");
        BuyChoice = Console.ReadLine();
        switch (BuyChoice)
        {
            case "1":
                loopBreakBuyChoice = false;
                Console.WriteLine($"每公斤香蕉的价格:{BananaKgPrice}欧元");
                bool loopBreakBananaDigits = true;
                while (loopBreakBananaDigits)
                {
                    Console.WriteLine("您想购买多少香蕉?");
                    bananas = Console.ReadLine();//按回车键 + 数字
                    ConsoleKeyInfo key;
                    key = Console.ReadKey(true);
                    if (key.Key == ConsoleKey.Enter)
                    {

                    }
                    else
                    {
                        bool DigitsBanana = bananas.All(char.IsDigit);
                        if (!DigitsBanana)
                        {
                            loopBreakBananaDigits = true;
                            Console.WriteLine("请插入香蕉的数量。");
                        }

                        if (DigitsBanana)
                        {
                            loopBreakBananaDigits = false;
                            loopBreakBuyChoice = false;
                            price = Math.Round(Convert.ToDouble(bananas) * Convert.ToDouble(bananaWeight) / Convert.ToDouble(kg) * Convert.ToDouble(BananaKgPrice), 2);
                        }
                    }
                }

                break;
         }         
    }
}
英文:

So, im learing C# right now, and i was making my console program, which sells you some fruits. with the help of loop, I made it so that if a person enters a non-digit, then the loop starts over. But it turns out, if i type nothing and just press enter, my code gets an error. What should I do in such a situation? How can I change the code?

// Main Method
public static void Main()
{
    //buy
    float kg = 1000;
    string bananas;
    float BananaKgPrice = 1.69f;
    float bananaWeight = 200;
    float WatermelonKgPrice = 3.29f;
    double price;
    string BuyChoice;

    Console.WriteLine("Welcome to our shop! We sell bananas and watermelons.");
    Console.WriteLine($"Kilo of bananas costs {BananaKgPrice} euros, kilo watermelons {WatermelonKgPrice} euros");
    bool loopBreakBuyChoice = true;
    while (loopBreakBuyChoice)
    {
        Console.WriteLine("What do you want to buy? 1 - bananas, 2 - watermelons");
        BuyChoice = Console.ReadLine();
        switch (BuyChoice)
        {
            case "1":
                loopBreakBuyChoice = false;
                Console.WriteLine($"Price of bananas for kilo.: {BananaKgPrice} euro");
                bool loopBreakBananaDigits = true;
                while (loopBreakBananaDigits)
                {
                    Console.WriteLine("How much bananas do you want to buy?");
                    bananas = Console.ReadLine();//press enter +digit
                    ConsoleKeyInfo key;
                    key = Console.ReadKey(true);
                    if (key.Key == ConsoleKey.Enter)
                    {

                    }
                    else
                    {
                        bool DigitsBanana = bananas.All(char.IsDigit);
                        if (DigitsBanana != true)
                        {
                            loopBreakBananaDigits = true;
                            Console.WriteLine("Please insert AMOUNT of bananas.");
                        }

                        if (DigitsBanana == true)
                        {
                            loopBreakBananaDigits = false;
                            loopBreakBuyChoice = false;
                            price = Math.Round(Convert.ToDouble(bananas) * Convert.ToDouble(bananaWeight) / Convert.ToDouble(kg) * Convert.ToDouble(BananaKgPrice), 2);
                        }
                    }
                }

                break;
         }         
    }
}

答案1

得分: 1

我将代码部分保留,只返回翻译后的注释和字符串内容:

public static void Main()
{
    //购买
    float kg = 1000;
    string bananas;
    float BananaKgPrice = 1.69f;
    float bananaWeight = 200;
    float WatermelonKgPrice = 3.29f;
    double price;
    string BuyChoice;

    Console.WriteLine("欢迎光临我们的商店!我们出售香蕉和西瓜。");
    Console.WriteLine($"香蕉每千克售价 {BananaKgPrice} 欧元,西瓜每千克售价 {WatermelonKgPrice} 欧元");
    bool loopBreakBuyChoice = true;
    while (loopBreakBuyChoice)
    {
        Console.WriteLine("您想购买什么?1 - 香蕉,2 - 西瓜");
        BuyChoice = Console.ReadLine();
        switch (BuyChoice)
        {
            case "1":
                loopBreakBuyChoice = false;
                Console.WriteLine($"每千克香蕉的价格:{BananaKgPrice} 欧元");
                bool loopBreakBananaDigits = true;
                while (loopBreakBananaDigits)
                {
                    Console.WriteLine("您想购买多少香蕉?");
                    bananas = Console.ReadLine();//按回车键
                    ConsoleKeyInfo key;
                    key = Console.ReadKey(true);
                    if (key.Key == ConsoleKey.Enter)
                    {

                    }
                    else
                    {
                        bool DigitsBanana = bananas.All(char.IsDigit);
                        if (DigitsBanana != true)
                        {
                            loopBreakBananaDigits = true;
                            Console.WriteLine("请插入香蕉的数量。");
                        }

                        if (DigitsBanana == true)
                        {
                            loopBreakBananaDigits = false;
                            loopBreakBuyChoice = false;
                            price = Math.Round(Convert.ToDouble(bananas) * Convert.ToDouble(bananaWeight) / Convert.ToDouble(kg) * Convert.ToDouble(BananaKgPrice), 2);
                        }
                    }
                }

                break;
         }         
    }
}

希望这对你有所帮助!如果你需要进一步的翻译或解释,请随时提问。

英文:

I pasted your code into mine, but it only works if enter is pressed twice. If you press it 1 time, and then any letter / number, the program will break

   public static void Main()
{
    //buy
    float kg = 1000;
    string bananas;
    float BananaKgPrice = 1.69f;
    float bananaWeight = 200;
    float WatermelonKgPrice = 3.29f;
    double price;
    string BuyChoice;

    Console.WriteLine("Welcome to our shop! We sell bananas and watermelons.");
    Console.WriteLine($"Kilo of bananas costs {BananaKgPrice} euros, kilo watermelons {WatermelonKgPrice} euros");
    bool loopBreakBuyChoice = true;
    while (loopBreakBuyChoice)
    {
        Console.WriteLine("What do you want to buy? 1 - banans, 2 - watermelons");
        BuyChoice = Console.ReadLine();
        switch (BuyChoice)
        {
            case "1":
                loopBreakBuyChoice = false;
                Console.WriteLine($"Price of bananas for kilo.: {BananaKgPrice} euro");
                bool loopBreakBananaDigits = true;
                while (loopBreakBananaDigits)
                {
                    Console.WriteLine("How much bananas do you want to buy?");
                    bananas = Console.ReadLine();//press enter
                    ConsoleKeyInfo key;
                    key = Console.ReadKey(true);
                    if (key.Key == ConsoleKey.Enter)
                    {

                    }
                    else
                    {
                        bool DigitsBanana = bananas.All(char.IsDigit);
                        if (DigitsBanana != true)
                        {
                            loopBreakBananaDigits = true;
                            Console.WriteLine("Please insert AMOUNT of bananas.");
                        }

                        if (DigitsBanana == true)
                        {
                            loopBreakBananaDigits = false;
                            loopBreakBuyChoice = false;
                            price = Math.Round(Convert.ToDouble(bananas) * Convert.ToDouble(bananaWeight) / Convert.ToDouble(kg) * Convert.ToDouble(BananaKgPrice), 2);
                        }
                    }
                }

                break;
         }         
    }
}

huangapple
  • 本文由 发表于 2023年7月3日 22:35:21
  • 转载请务必保留本文链接:https://go.coder-hub.com/76605758.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定