处理堆栈和接口的问题
本文关键字:问题 接口 堆栈 处理 | 更新日期: 2023-09-27 18:15:36
所以我的Console Application
遇到了麻烦。我试图实现一些方法到我的类的接口。但是我真的掌握不了窍门。
-
我应该
push
字母(char
)到我的堆栈与push method
从类。 -
我需要从
stack
中pop
它们,并从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);
}