处理堆栈和接口的问题

本文关键字:问题 接口 堆栈 处理 | 更新日期: 2023-09-27 18:15:36

所以我的Console Application遇到了麻烦。我试图实现一些方法到我的类的接口。但是我真的掌握不了窍门。

  • 我应该push字母(char)到我的堆栈与push method从类。

  • 我需要从stackpop它们,并从stack中写出每个char到控制台。我还应该检查Stack是否为空的isEmpty方法,我认为这是正确的ATM。

  • 我还在class中做了stack,因为我正试图用methods做点什么。但是它似乎不影响程序中创建的堆栈。

我得到的问题是什么都没有发生。当我启动应用程序时,控制台弹出并运行代码并等待Console.Read()发生。

希望你明白,代码是直截了当的。我将把Interface, Class and program code.

界面代码:

public interface IStackInterface
{
    char peek();
    char pop();
    void push(char nytt);
    bool isEmpty();
}
类代码:

public class StackClass : IStackInterface
{
    Stack<char> stacken = new Stack<char>();
    public StackClass()
    {
    }
    public bool isEmpty()
    {
        if (stacken.Count == 0)
        {
            return false;
        }
        else
        {
            return true;
        }
    }
    public char peek()
    {
        return stacken.Peek();
    }
    public char pop()
    {
        return stacken.Pop();
    }
    public void push(char nytt)
    {
        stacken.Push(nytt);
    }
}

程序代码:

static void Main(string[] args)
        {
                StackClass stacken = new StackClass();
                try
                {
                    stacken.push('t'); stacken.push('s');
                    stacken.push('ä'); stacken.push('b');
                    stacken.push(' ');
                    stacken.push('r'); stacken.push('ä');
                    stacken.push(' '); stacken.push('m');
                    stacken.push('o'); stacken.push('g');
                    stacken.push('a'); stacken.push('L');
                }
                catch (InvalidOperationException e)
                {
                    Console.WriteLine(e.Message);
                }
                while (!stacken.isEmpty())
                {
                    Console.WriteLine(stacken.pop());
                }
                Console.Read();
        }

问好。

处理堆栈和接口的问题

您的代码没有像您期望的那样做,纯粹是因为您的isEmpty的实现方式是错误的。当计数为零时,它应该返回true

你的代码中有一个逻辑错误…isEmpty返回与您想要的相反的结果。同样,您可以这样优化它:

public bool isEmpty()
{
    return (stacken.Count == 0);
}

甚至:

public bool isEmpty()
{
    return stacken == null ? true : (stacken.Count == 0);
}