2016-08-01 31 views
-1

Also was ich versuche zu tun, ist eine Liste von Benutzereingaben zu nehmen und sie direkt in ein Array zu platzieren. Ich möchte dies tun, ohne jedem Eingang eine Variable zuzuordnen, da es Hunderte geben könnte.Den Wert einer Funktion zurücksenden, ohne sie einer Variablen zuzuweisen

 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]); 
    } 

Die Console.WriteLine gibt nur ‚Console.ReadKey(). ToString())

Ich möchte sie den Schlüssel, den Benutzereingaben zurückzukehren. Oder der Rückgabewert von Console.ReadKey

+1

FYI, werden Sie wahrscheinlich verwenden möchten [Console.ReadLine] (https://msdn.microsoft.com/en-us/library/system.console.readline (v = vs.110) .aspx) anstelle von 'Console.ReadKey' –

+1

Warum nicht' List 'anstelle von' ArrayList' verwenden? Warum benutzen Sie 'Console.ReadKey' anstelle von' Console.ReadLine', da Ihre Nachricht sagt, dass Sie einen Namen eingeben und die Eingabetaste drücken sollen? – juharr

+0

Ich habe nur ReadKey als Test verwendet. Ich hatte Probleme, Werte aus einer Liste zu lesen, weshalb ich zu ArrayLists wechselte. Wenn Sie einen Code kommentieren könnten, der zeigt, wie man die Liste verwendet, wäre das großartig. Aber hat immer noch die Frage, wie ich nur den Wert nicht den acctuall Befehl zurückgebe? –

Antwort

0

Nicht sicher genau, was Sie hier fragen, aber die Verwendung einer Struktur verhindert, dass Sie separate Arrays pflegen müssen. Wenn Sie tatsächlich eine dynamische Anzahl von Argumenten haben, kann ich diese Antwort ändern.

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."); 
} 
Verwandte Themen