添加用户输入以创建对象的循环(C#)

时间:2019-06-05 11:15:47

标签: c# loops class object for-loop

我正在设置一个控制台应用程序,它将接收用户的输入,并使用类“ Items”创建一个新对象。但是我也想要一个循环,以便用户可以进行多个输入,如果我希望变量“ foo”在循环中进行更改,我应该使用哪种循环以及它如何工作?

我尝试了一些for循环,但我试图将“ i”放在“ foo”之后,但没有使其正常工作...

"error": {
    "charge": "ch_1EhvwjBqa3pLeb3ypVgXafhI",
    "code": "authentication_required",
    "decline_code": "authentication_required",
    "message": "Your card was declined. This transaction requires two-factor authentication.",
[...]

编辑: 抱歉,我当时想简化一切。我的错! 就像其中一条评论所说的那样,我想存储在每次迭代中创建的每个对象。然后将其显示为“购物清单”,其中最贵的商品在顶部,最便宜的商品在底部。

这是我尝试过的事情之一。 (不是for循环,但具有与i ++相同的概念,等等)

        Console.WriteLine("Write a item:");
        string item = Console.ReadLine();
        Console.WriteLine("Write a price:");
        decimal price = Convert.ToDecimal(Console.ReadLine());
        var foo = new Items(item, price);
        Console.Write(" {0} {1} ", foo.Item, foo.Price);

2 个答案:

答案 0 :(得分:1)

编译器肯定会告诉您此语法错误:

var foo(i) = new Items(item, price);

变量声明已损坏。 看起来像,您正在尝试创建一系列带编号的变量。每当您要执行此操作时,确实想要的就是一个集合。例如List<T>之类的东西。您可以在循环之前 声明列表,然后在循环内添加到列表。

您可能还想在循环之前声明输入变量。并明智地命名变量,这将有助于您理解和支持自己的代码。 (例如,您应该将Items类重命名为Item。因为它表示单个“ item”对象。)

类似的东西:

var items = new List<Items>();
var itemName = string.Empty;
do
{
    Console.WriteLine("Insert items that you want to buy, when you are finnish, write 'done'");
    Console.Write("Insert a item: ");
    itemName = Console.ReadLine();
    switch (itemName.ToLower())
    {
        case "done":
            break;
        default:
            Console.WriteLine("Write a price:");
            decimal itemPrice = Convert.ToDecimal(Console.ReadLine());
            var item = new Items(itemName, itemPrice);
            items.Add(item);
            break;
    }
} while (itemName != "done");

// Here you now have a list of items.  You can loop over that list for further logic, output, etc.

答案 1 :(得分:0)

您也可以尝试使用C#创建应用程序。您可以定义要添加的项目数的长度。在这里我用了2个长度来添加购物车中的物品。

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
namespace StackQue
{
    class Sample
    {
        public static void Main(string[] args)
        {
            Dictionary<string, decimal> items = new Dictionary<string, decimal>();
            for (var i = 0; i < 2; i++)
            {
                Console.WriteLine("Write an item");
                string item = Console.ReadLine();
                Console.WriteLine("Write an price");
                decimal price = Convert.ToDecimal(Console.ReadLine());
                items.Add(item, price);
            }
            foreach (var item in items)
            {
                Console.WriteLine("Item " + item.Key + " have price " + item.Value + ".");
            }
        }
    }
}