3

我的代码看起来像这样,但我把它缩短了一点。

public static void mainvoid()
{
    string line = Console.ReadLine().ToLower();
    if (line == "restart")
    {
        Console.Clear();
        Main();
    }
    if (line == "enter a value: ")
    {
        string value = console.ReadLine();
        console.writeline("Your value is {0}", value);
        mainvoid();
    }
    if (line == "my name")
    {
        Console.WriteLine("Your name is {0}",     ConsoleApplication1.Properties.Settings.Default.name);
        mainvoid();
    }

我希望我的程序接收一个命令(我已经完成了),其中一些在它们之后有值/字符串例如顺便说一下我使用 c# 2010 我希望我的命令看起来像这样

我的名字是 Daniel
,所以字符串/值 = Daniel 或
名称 = 比利,所以字符串/值 = 比利

所以我希望它通过 console.readline(); 并挑出它正在更改名称,然后将其更改为的名称。

但我不知道如何使最后一位成为我也可以使用的值/字符串。

如果你能帮助我,请发表评论:)

4

3 回答 3

1

您可能需要提出自己的语法。

例如,我选择了如下语法

<Command Name>:Parameters    
ChangeName:Daniel

然后有一个枚举来定义你的命令

enum Command
{
      ChangeName
} 

//现在我们可以解析命令并采取必要的行动

//Split the string
String[] inputs= Console.ReadLine().Split(":");//"ChangeName:Bob"

//Generate the enumeration type from the input command
var cmd = (Command) Enum.Parse(typeof(Command), inputs[0] , false);

if(cmd == Command.ChangeName)
{
//Process the parameters in inputs[1]
}
于 2012-10-27T11:27:59.833 回答
0

如果您不想通过选择命令来选择Console.ReadLine()命令Console.ReadKey(true)。你的文字不会改变。

这是示例:

ConsoleKeyInfo ck = Console.ReadKey(true);
if(ck.Key == Keys.Space){
//do something
}

我不太了解你,但我会尝试猜测:)

如果你想检索名字,你可以这样写:

Console.Write("Your name is ");
string name = Console.ReadLine();
于 2012-10-27T11:14:51.083 回答
0

我可以看到这里有两个问题,一个是从“我的名字是 xyz”命令中提取人名,另一个是保存该值以供稍后在程序中使用。

由于您构建 的方式mainmethod,以及它调用自身的事实(这称为递归),它不能从一个调用共享任何变量到下一个调用。这使得无法存储人名。您可以通过在mainmethod

static public void Main()
{
    string currentLine;

    do
    {
        currentLine = Console.ReadLine();
    }
    while (!currentLine.Equals("exit"))
}

这将持续允许用户输入命令,并且当用户输入“退出”时程序将终止。

现在到存储用户名的问题上,您可以简单地删除句子中的“我的名字是”部分来获取用户名......

static public void Main()
{
    string username = "Matthew";

    string currentLine;

    do
    {
        currentLine = Console.ReadLine();

        if (currentLine.Equals("restart"))
        {
            Console.Clear();
        }

        if (currentLine.StartsWith("my name is"))
        {
            username = currentLine.Replace("my name is ", "");
        }

        if (currentLine.Equals("my name"))
        {
            Console.WriteLine("Your name is {0}", username);
        }
    }
    while (!currentLine.Equals("exit"))
}

我希望这能让你感动!

于 2012-10-27T11:54:36.540 回答