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を使用しているところで私は私のコマンドをこのように見せたい

私の名前はダニエル
なので、文字列/値=ダニエルまたは
名前=ビリーなので、文字列/値=ビリー

だから私はそれを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

ここには 2 つの問題があることがわかります。1 つは「my name is xyz」コマンドから人の名前を抽出することであり、もう 1 つはプログラムの後半でその値を保存することです。

を構造化した方法mainmethodと、それ自体を呼び出す (これは再帰と呼ばれます) ため、ある呼び出しから次の呼び出しまで変数を共有することはできません。これにより、人物の名前を保存できなくなります。代わりにループを作成することで、再帰を排除できますmainmethod

static public void Main()
{
    string currentLine;

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

これにより、ユーザーは継続的にコマンドを入力できるようになり、ユーザーが「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 に答える