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

标签 c# if-statement console conditional-statements multiple-conditions

我有一个控制台应用程序,要求用户选择三个选项之一,并在需要时能够打开库存。但是,控制台不会检查其他条件是否为真或为假,而是仅线性读取条件并等待直到第一个条件得到满足。例如,在下面的代码中,它运行第一位文本,显示选项,然后等待用户输入“库存”,而不考虑其他选项。这是怎么回事?为什么会出现这种情况?以及如何让控制台运行并检查是否满足所有条件?

这是代码

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/

相关文章:

c# - 如何从 asp.net mvc 3 应用程序中的 App_Data 文件夹中删除文件?

c# - 有条件的 foreach 循环

java - 需要帮助解决java中猜谜游戏的难度选择问题

javascript - 复制脚本并递增 id 名称以动态添加输入内容

c# - 像在 C# linq 中一样在 Java 8 中获取匿名对象

c# - 在多线程C#应用程序中使用互操作的Excel文件操作失败

if-statement - 批处理文件中的嵌套 If Exist 语句

javascript - Sublime Text 2 Javascript 控制台

.net - Windows 应用商店有类似控制台的 API 吗?

python - 计算控制台Python中打印的行数