我有一个控制台应用程序,要求用户选择三个选项之一,并在需要时能够打开库存。但是,控制台不会检查其他条件是否为真或为假,而是仅线性读取条件并等待直到第一个条件得到满足。例如,在下面的代码中,它运行第一位文本,显示选项,然后等待用户输入“库存”,而不考虑其他选项。这是怎么回事?为什么会出现这种情况?以及如何让控制台运行并检查是否满足所有条件?
这是代码
using System;
using System.IO;
namespace Feed_de_monky
{
class Program
{
static void Main(string[] args)
{
Console.ForegroundColor = ConsoleColor.Green;
string one = "";
string two = "";
string inventory = "inventory";
int storyint = 0;
TextReader input = Console.In;
TextWriter output = Console.Out;
int options = 0;
if (storyint == 0)
{
Console.WriteLine("You are in a dark Jungle. You look into the darkness of the trees and see the silhouette of a tiger standing in front of you down the way.");
Console.WriteLine("");
Console.WriteLine("turn and run");
Console.WriteLine("pounce on tiger");
Console.WriteLine("climb a tree.");
options++;
if (input.ReadLine() == inventory)
{
output.WriteLine(one);
output.WriteLine(two);
return;
}
else if(input.ReadLine() == "turn and run" && options == 1)
{
output.WriteLine("");
output.WriteLine("The tiger chases you through the darkness. You never had a chance.");
Console.Write("Press any key to continue...");
Console.ReadKey(true);
}
else if(input.ReadLine() == "pounce on tiger" && options == 1)
{
output.WriteLine("");
output.WriteLine("The tiger is caught by surprise. You overwhelm the beast and he dies of shock and surprise on the spot");
one = "tiger skin";
output.WriteLine("TIGER SKIN ADDED TO YOUR INVENTORY");
storyint++;
options++;
}
else if(input.ReadLine() == "climb a tree" && options == 1)
{
output.WriteLine("");
output.WriteLine("You climb the tree. But while you sit on the branches believing yourself to be safe, the tiger jumps through the air and bites your head clean off. You never had a chance.");
Console.Write("Press any key to continue...");
Console.ReadKey(true);
}
Console.Write("Press any key to continue...");
Console.ReadKey(true);
}
}
}
}
最佳答案
我认为你可能需要设置
var inputLine = input.ReadLine();
然后在变量 inputLine 上执行逻辑。
正如您现在所拥有的那样,我相信它调用 ReadLine 的次数比您预期的要多。但是,如果您只调用 .ReadLine() 一次并将其分配给一个变量,那么效果应该比重复调用它更好。
关于c# - 如何让控制台读取所有条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53272038/