How can i get more then one input in 2d array, to save and out put user info

时间:2018-03-25 20:21:17

标签: c# arrays 2d

static void Main2(string[] args)
{
    string[,] items = new string[2, 2];

    for (int i = 0; i < 2; i++)
    {
        for (int j = 0; j < 2; j++)
        {
            Console.WriteLine("Enter Item Name:");
            Console.WriteLine("Enter Item Price:");
            Console.WriteLine("Enter Item Quantity:");

            items[i, j] = Convert.ToString(Console.ReadLine());
        }
    }

    for (int i = 0; i < 2; i++)
    {
        for (int j = 0; j < 2; j++)
        {
            Console.WriteLine("Item Name: " + items[i, j]);
            Console.WriteLine();
            Console.WriteLine("Item Price: " + items[i, j]);
            Console.WriteLine();
            Console.WriteLine("Item Quantity: " + items[i, j]);
            Console.WriteLine();
        }

        Console.ReadLine();
    }
}

How can I get more than one input in a 2d array, to save and output user info?

2 个答案:

答案 0 :(得分:1)

If you want to use the array to hold the user's answers, then maybe this helps:

string[,] items = new string[2, 3];
for (int i = 0; i < 2; i++)
{
    Console.WriteLine("Enter Item Name:");
    items[i, 0] = Console.ReadLine();
    Console.WriteLine("Enter Item Price:");
    items[i, 1] = Console.ReadLine();
    Console.WriteLine("Enter Item Quantity:");
    items[i, 2] = Console.ReadLine();
}

for (int i = 0; i < 2; i++)
{
  Console.WriteLine("Item Name: "+items[i,0]);
  Console.WriteLine("Item Price: " + items[i, 1]);
  Console.WriteLine("Item Quantity: " + items[i, 2]);
}
Console.ReadLine();

答案 1 :(得分:0)

Probably the most readable way to do this would be to create a simple class to store the data, and then store a collection of these classes in a List. You can override the ToString method on the class, and you can create a simple wrapper for getting strongly typed data from the user (for Price and Quantity, we want them to only enter numbers):

public class Item
{
    public string Name { get; set; }
    public decimal Price { get; set; }
    public int Quantity { get; set; }

    public override string ToString()
    {
        return $"Name: {Name}, Price: {Price:C}, Quantity: {Quantity}";
    }
}

Now a few wrappers to prompt the user for input and get strongly-typed results:

private static int GetIntFromUser(string prompt)
{
    int result;

    do
    {
        Console.Write(prompt);
    } while (!int.TryParse(Console.ReadLine(), out result));

    return result;
}

private static decimal GetDecimalFromUser(string prompt)
{
    decimal result;

    do
    {
        Console.Write(prompt);
    } while (!decimal.TryParse(Console.ReadLine(), out result));

    return result;
}

private static string GetInputFromUser(string prompt)
{
    Console.Write(prompt);
    return Console.ReadLine();
}

Then we can two items from the user in a loop:

static void Main(string[] args)
{
    var items = new List<Item>();

    for (var i = 0; i < 2; i++)
    {
        var itemNumber = $"Item #{i + 1}";
        var item = new Item
        {
            Name = GetInputFromUser($"Enter {itemNumber} Name: "),
            Price = GetDecimalFromUser($"Enter {itemNumber} price: "),
            Quantity = GetIntFromUser($"Enter {itemNumber} Quantity: ")
        };

        items.Add(item);
    }

    foreach (var item in items)
    {
        Console.WriteLine(item);
    }
}