如何编写一个将随机值插入整数堆栈的函数?

时间:2011-05-01 21:53:41

标签: c#

编写一个接受整数作为唯一参数的函数。抛出一个小于1的整数异常。功能应该 创建一个整数堆栈(使用泛型强制执行堆栈中存储的类型!), 使用随机整数填充堆栈(随机在0到99范围内),这样堆栈保持等于传入的参数的随机整数计数,并且 返回堆栈。

这是我的代码到目前为止,我是新手。如果你能提供帮助,我会很高兴

Console.WriteLine("ENTER A NUMBER");
int arg = Int16.Parse(Console.ReadLine());

if (arg < 1)
{
    try
    {
    }
    catch (System.IndexOutOfRangeException e)
    {
        throw new System.ArgumentOutOfRangeException("value must be more than 1");
    }

    Stack<int> mystack = new Stack<int>(arg);
    Random rd = new Random();
    if( arg > 1)
    {

        int rndnum = rd.Next(arg);
        arg = mystack.Pop();
        return

    }
    Console.ReadLine();

3 个答案:

答案 0 :(得分:0)

我认为你想要的是一个函数 - “编写一个接受整数作为唯一参数的函数。

对我来说,这看起来像是:

ReturnType MyFunction(int argument) { ... }

...其中ReturnType是函数的返回类型,...需要由实际实现替换。它在后面的说明中告诉你返回类型应该是一个整数堆栈。所以......

Stack<int> MyFunction(int argument) { ... } 

您可能需要Console.ReadLine()来收集输入,以发送到该功能。但是描述中没有任何内容说该函数应该从控制台读取输入。所以对我来说,这意味着Console.ReadLine()应该在函数之外。

给出一个想法,再次转动曲柄,并发布更新。

答案 1 :(得分:0)

首先,这段代码意味着:“什么都不做,如果没有什么可以抛出另一个异常”

try
{
}
catch (System.IndexOutOfRangeException e)
{
    throw new System.ArgumentOutOfRangeException("value must be more than 1");
}

虽然你需要的是“抛出整数的异常小于一。”。因此,如果数字低于throw,您必须new Exception 1

当您实现上述行为时,您将不需要

Stack<int> mystack = new Stack<int>(arg);
Random rd = new Random();
if( arg > 1) // to check if the argument is invalid
{            // the program shouldn't execute if
}            // arg is lower than 1

之后,请查看Random的引用,您说您需要一个099之间的数字

rd.Next(arg); // this is not generating a number between 0 and 99

此外,您不应该从堆栈中删除元素,您必须add元素

mystack.Pop(); // removing from stack

然后返回堆栈。

答案 2 :(得分:0)

永远不会输入catch块。 try块中没有任何内容,程序也不会崩溃=&gt;它不会去捕捉。