C# 如何让控制台读取所有条件

C# 如何让控制台读取所有条件,c#,if-statement,console,conditional-statements,multiple-conditions,C#,If Statement,Console,Conditional Statements,Multiple Conditions,我有一个控制台应用程序,它要求用户从三个选项中选择一个,并能够根据需要打开一个清单。但是,控制台不检查其他条件是否为真,而只是线性读取条件并等待第一个条件满足。例如,在下面的代码中,它运行第一位文本,显示选项,然后等待用户输入“inventory”,而不考虑其他选项。怎么了?为什么会发生这种情况?我如何让控制台运行并检查是否满足所有条件 这是密码 using System; using System.IO; namespace Feed_de_monky { class Program

我有一个控制台应用程序,它要求用户从三个选项中选择一个,并能够根据需要打开一个清单。但是,控制台不检查其他条件是否为真,而只是线性读取条件并等待第一个条件满足。例如,在下面的代码中,它运行第一位文本,显示选项,然后等待用户输入“inventory”,而不考虑其他选项。怎么了?为什么会发生这种情况?我如何让控制台运行并检查是否满足所有条件

这是密码

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(),并将其分配给一个变量,该变量的性能应该比重复调用要好。

是因为选项吗!=1是“爬树”。始终是问题之前的最后一个输出?您应该只调用
ReadLine()
一次,然后测试所有
if/else
值的结果。目前,第一个
if
条件执行并读取一行。如果未输入“inventory”,则执行下一个
else If
并读取另一行。现在,如果您输入除“转身跑步”之外的任何内容,则下一个
else if
将显示一行。谢谢。你是对的。我将您的行添加到if(storyint==0){}中,它工作得非常好。