【问题标题】:Integer validation method整数验证方法
【发布时间】:2015-05-01 14:05:18
【问题描述】:

我在一份试卷中遇到了这个问题:

为方法编写代码主体

public static int enter_No_Of_Items(int min, int max)

这将允许用户输入购买的商品数量的值。

该值应在 min 到 max 范围内进行验证。你的答案应该包括数据声明、提示和输入语句、范围检查、错误信息控制。

可能只是我,但这个问题似乎很愚蠢,因为我认为验证将返回 true 或 false 而不是整数,如果有人可以帮助我回答这个问题或确切解释问题想要什么,那就太好了,任何帮助感激不尽。

【问题讨论】:

  • 只有问题的作者才能回答预期的问题,但是在 C 天(在没有布尔数据类型之前)0 用于 false 并且任何非零都用于 @ 987654323@
  • 请告诉我,您的导师没有教您在单词之间使用下划线来创建方法名称
  • @RufusL:确实。否则我们会教训他;)
  • 对我来说也没有意义。它甚至不传入要验证的整数。如果这是 WPF,那么有一些非常好的验证工具。
  • 另外两件事 - 公共方法通常是 PascalCase,它们应该描述该方法的作用。这似乎是用将给用户的提示命名的,而不是它实际执行的操作。一个更好的名字可能是GetItemCount

标签: c# methods integer


【解决方案1】:

你是对的。一般是验证:

  • 返回一个bool,表示好坏;
  • 没有返回值,如果无效则抛出异常。

但是,在这种情况下,系统会要求您“要求用户”输入一个值。您的方法的范围不仅是验证,它也是检索输入。这可能是预期的返回值。

如果输入的数字无效,您可以抛出异常,或者继续询问直到他们最终输入有效数字。

【讨论】:

  • 如果用户输入在最小值和最大值之间,返回值?
  • 为了扩展它(因为它是正确的),由于分配没有指定只使用一种方法,为什么不将你的验证方法(可以返回布尔值)提取到另一种方法中并调用它No_Of_Items?
  • 因为“项目数”在这个世界上是一个正数(包括零),您可以将“无效”返回 -1 作为另一种解决方案。
  • @DrKoch:是的,但这很大程度上取决于实际需求。如果您使用 int,您应该期望整个范围,而不仅仅是正子集。
【解决方案2】:

我尝试过编写方法,这是我能想到的最好的方法:

public static int enter_No_Of_Items(int min, int max)
    {
        string input = "input";
        bool ok = false;
        while (ok == false)
        {
            Console.WriteLine("Enter a number between {0} and {1}.", min, max);
            input = Console.ReadLine();

            if ((int.Parse(input) >= min) && (int.Parse(input) <= max))
            {
                Console.WriteLine("Valid number.");
                break;
            }

            Console.WriteLine("Invalid number.");
        }

        return int.Parse(input);
    }

    static void Main(string[] args)
    {
        int randomA = 5;
        int randomB = 9;

        int itemCount = enter_No_Of_Items(randomA, randomB);
        Console.ReadLine();
    }

如果我能得到关于如何改进它的反馈,那就太好了。谢谢。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-21
    相关资源
    最近更新 更多