2016-08-01 3 views
-1

だから私がしようとしているのは、ユーザー入力のリストをとり、配列に直接配置することです。私は何百もある可能性があるので、各入力に変数を割り当てることなくこれをしたいと思います。関数の値を変数に代入して戻すことで値を返す

 static void writeAndWait(String statement, int millisecondsToWait) 
    { 
     Console.WriteLine(statement); 
     Thread.Sleep(millisecondsToWait); 
     return; 
    } 
    static void Main(string[] args) 
    { 
     //I am using ArrayLists because they will store as many values as needed wether it be 1 or 1,000,000 or more 
     ArrayList Name; //Declaring Name 
     ArrayList Time; //Declaring Time 
     ArrayList Path; //Declaring Path 
     Name = new ArrayList(); //Name will be used to store the names of the timers the user inputs 
     Time = new ArrayList(); //Time will be used to store the times of the timers the user inputs 
     Path = new ArrayList(); //Path will be used to store the path line of the timers the user inuts; 

     writeAndWait("Hello, if you want to add timers all you need to do is type a name and press enter, say how long you want the timer to run for in minutes, and then add a number 1-10 any timers with the same number at the end will run sycrnasly, and any timers with diferant nubers will run async", 2000); 
     Name.Add(Console.ReadKey().ToString()); 
     Console.WriteLine(Name[0]); 
    } 

Console.WriteLineをしたばかり返す「Console.ReadKey()。ToStringメソッド())

私はそれがユーザーの入力したキーを返すようにしたいと思います。または、Console.ReadKeyの戻り値

+1

FYI、あなたはおそらく(.aspxのhttps://msdn.microsoft.com/en-us/library/system.console.readline(V = vs.110))[Console.ReadLine]を使用したいです'Console.ReadKey'の代わりに –

+1

' ArrayList'の代わりに 'List 'を使ってみませんか?また、なぜあなたのメッセージは名前を入力してEnterを押すと言うので、 'Console.ReadLine'ではなく' Console.ReadKey'を使用していますか? – juharr

+0

私はテストとしてReadKeyを使っていました。私はリストから値を読み取る際にいくつかの問題を抱えていたので、なぜArrayListsに切り替えました。リストを使用する方法を示す際にいくつかのコードにコメントすることができれば、それは素晴らしいものになります。しかし、まだacctuallコマンドではなく値を返すだけでよいのでしょうか? –

答えて

0

ここでは何を求めているのかよく分かりませんが、構造体を使用すると、別の配列を維持する必要がなくなります。あなたが実際に議論の動的な数を持っている場合、私はこの答えを変更することができます。

public struct TimerDescriptor 
{ 
    public string Name; 
    public string Time; 
    public string Path; 

    public static bool TryParse(string text, out TimerDescriptor value) 
    { 
     //check for empty text 
     if (string.IsNullOrWhiteSpace(text)) 
     { 
      value = default(TimerDescriptor); 
      return false; 
     } 

     //check for wrong number of arguments 
     var split = text.Split(new [] {' '}, StringSplitOptions.RemoveEmptyEntries); 
     if (split.Length != 3) 
     { 
      value = default(TimerDescriptor); 
      return false; 
     } 

     value = new TimerDescriptor 
     { 
      Name = split[0], 
      Time = split[1], 
      Path = split[2] 
     }; 

     return true; 
    } 

    public override string ToString() 
    { 
     return Name + ' ' + Time + ' ' + Path; 
    } 
} 

static void writeAndWait(String statement, int millisecondsToWait) 
{ 
    Console.WriteLine(statement); 
    Thread.Sleep(millisecondsToWait); 
} 
static void Main(string[] args) 
{ 
    //I am using ArrayLists because they will store as many values as needed wether it be 1 or 1,000,000 or more 
    var timerDescriptors = new List<TimerDescriptor>(); 

    writeAndWait("Hello, if you want to add timers all you need to do is type a name and press enter, say how long you want the timer to run for in minutes, and then add a number 1-10 any timers with the same number at the end will run sycrnasly, and any timers with diferant nubers will run async", 2000); 

    var line = Console.ReadLine(); 
    TimerDescriptor descriptor; 
    if (TimerDescriptor.TryParse(line, out descriptor)) 
    { 
     timerDescriptors.Add(descriptor); 
     Console.WriteLine(descriptor); 
    } 
    else Console.WriteLine("Syntax error: wrong number of arguments. The syntax is: {Name} {Time} {Path} without the curly braces."); 
} 
関連する問題