【问题标题】:Can I make my code not accept any input other than an int C#我可以让我的代码不接受除 int C# 之外的任何输入吗
【发布时间】:2021-05-14 08:37:14
【问题描述】:

我希望我的代码只接受一个整数。我认为通过在 int 范围内放置 if else 语句会对此有所帮助,但是当输入文本作为输入时,它只会使程序崩溃。我该如何解决这个问题。

using System;

namespace planetage
{
    class Program
    {
        static void Main(string[] args)
        {
            const double mercuryYears = 0.24;
          
            

            Console.WriteLine("Please enter your age"); //Ask for users age
            int userAge = Convert.ToInt32(Console.ReadLine()); //take users age and convert to int from string

            if (userAge >= 0 && userAge <= 150) {

                double mercuryAge = userAge / mercuryYears; //calculation for age on mercury
                Console.WriteLine("Your age on Mercury is " + mercuryAge); //output age on mercury
            
            } else
            {
                Console.WriteLine("Please enter your age");
            }
        }
    }
}

【问题讨论】:

  • if (int.TryParse(someString, out var someInteger)) {...}

标签: c#


【解决方案1】:

如果您检查docs 中的Convert.ToInt32(string),您将看到在以下情况下引发了异常:

FormatException value 不包含可选符号后跟数字序列(0 到 9)。

如果你想不断地要求一个有效的整数直到给出一个,你可以使用以下方法:

int userAge;
do Console.WriteLine("Please enter your age");
while (int.TryParse(Console.ReadLine(), out userAge) is false);

// Do something with userAge..

int.TryParse 仅在 string 已成功转换为 int 且不抛出任何异常时返回 true

【讨论】:

    【解决方案2】:

    应该这样做

                Console.WriteLine("Please enter your age"); //Ask for users age
                int userAge;
                while (!int.TryParse(Console.ReadLine(), out userAge)) {
                    Console.WriteLine("Not a valid number");
                }
                if (userAge >= 0 && userAge <= 150)
                {
    
                    double mercuryAge = userAge / mercuryYears; //calculation for age on mercury
                    Console.WriteLine("Your age on Mercury is " + mercuryAge); //output age on mercury
    
                }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多