哦,2件事:1)这是一个控制台应用程序.2)我知道它是丹麦语,但它并不重要,它只是一个要求输入的例子.文本和变量无关紧要.
好吧,考虑一下这个简单的输入:它可能是任何类型的输入问题.
Console.WriteLine("Hvad er dit kundenummer: (Kun hele tal tilladt)");
string inputKnr = Console.ReadLine();
kundenummer = Convert.ToInt16(inputKnr);
Run Code Online (Sandbox Code Playgroud)
现在,如果客户输错了怎么办?比如一封信.try&catch会确保应用程序不会中断,但这不是我想要的解决方案.我希望它说你做错了,再试一次.很经典吧?
但是解决这个解决方案的最佳方法是什么?我想到了这个:
bool fangetKundenummer = true;
while (fangetKundenummer)
{
Console.WriteLine("Hvad er dit kundenummer: (Kun hele tal tilladt)");
string inputKnr = Console.ReadLine();
try
{
kundenummer = Convert.ToInt16(inputKnr);
fangetKundenummer = false;
}
catch
{
Console.WriteLine("Fejl. Prøv igen");
}
}
Run Code Online (Sandbox Code Playgroud)
但它似乎不是正确的方法.
另外,仅举几例,我正在玩的这个小应用程序连续有4个输入问题.这意味着这个令人讨厌的while()循环的4倍.
你也可以写一个函数.像这样的东西(没有理由以正确的方式去做,它只是为了说明一个概念):
static void verifyInput()
{
try
{
Console.WriteLine("question");
input = Console.ReadLine();
kundenummer = Convert.ToInt16(input)
}
catch
{
Console.WriteLine("Wrong. Do it …Run Code Online (Sandbox Code Playgroud) 我希望我使用正确的术语.我制作了一个单链表.
class MyStack
{
public Node Initial { get; set; }
public MyStack()
{
Initial = null;
}
public void Push(int data)
{
var node = new Node { Data = data, Next = Initial };
Initial = node;
}
public int Pop()
{
int res = Initial.Data;
Initial = Initial.Next;
return res;
}
public int Sum()
{
int sum = 0;
Node currentNode = Initial;
while (currentNode != null)
{
sum += currentNode.Data;
currentNode = currentNode.Next;
}
return sum; …Run Code Online (Sandbox Code Playgroud) 我制作了自己的单链/链表.现在,如果我想从列表中删除/删除节点/项目,我必须做这样的事情:
public void Delete(PARAMETERS)
{
Node previousNode = null,
currentNode = f;
while (currentNode != null)
{
if (SOMECONDITION)
{
if (previousNode == null)
{
f = currentNode.Next;
}
else
{
previousNode.Next = currentNode.Next;
}
}
else
{
previousNode = currentNode;
}
currentNode = currentNode.Next;
}
}
Run Code Online (Sandbox Code Playgroud)
如果SOMECONDITION为真,你只需跳过currentNode就可以有效地"删除"节点,因为没有任何东西指向它.
但是,我真的很想知道,为什么我不能这样做:
(...)
while ()
{
if (SOMECONDITION)
{
currentNode = currentNode.Next;
}
currentNode = currentNode.Next;
}
(...)
Run Code Online (Sandbox Code Playgroud)
也许:
(...)
while ()
{
if (SOMECONDITION)
{
currentNode = currentNode.Next.Next;
}
else
{
currentNode …Run Code Online (Sandbox Code Playgroud) 我有以下列表:
public class MyQueue : IEnumerable<int>
{
private Node Head { get; set; }
private Node Tail { get; set; }
public MyQueue()
{
Head = null;
}
public void Add(int item)
{
Enqueue(item);
}
public void Enqueue(int item)
{
var newItem = new Node { Data = item };
if (Head == null)
{
Head = newItem;
Tail = newItem;
return;
}
Node last = Tail;
last.Next = newItem;
Tail = newItem;
}
public IEnumerator<int> GetEnumerator()
{
Node current …Run Code Online (Sandbox Code Playgroud)