【发布时间】:2019-04-15 18:10:02
【问题描述】:
我有一个控制台应用程序,它要求用户从三个选项中选择一个,并且能够在需要时打开库存。但是,控制台不会检查其他条件是否为真,而是线性读取条件并等待第一个条件满足。例如,在下面的代码中,它运行文本的第一位,显示选项,然后等待用户输入“库存”而不考虑其他选项。这是怎么回事?为什么会这样?以及如何让控制台运行并检查是否所有条件都已满足?
这是代码
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);
}
}
}
}
【问题讨论】:
-
是因为 options != 1
-
是“爬树。”总是问题之前的最后一个输出?
-
你应该只调用一次
ReadLine(),然后测试你所有的if/else值。就目前而言,第一个if条件执行并读取一行。如果您没有输入“inventory”,那么下一个else if将执行并读取另一行。现在如果你输入除“turn and run”以外的任何内容,下一个else if将读取一行。
标签: c# if-statement console conditional-statements multiple-conditions