Цикл для добавления пользовательского ввода для создания объектов (C #) - PullRequest
1 голос
/ 05 июня 2019

Я настраиваю консольное приложение, которое будет принимать входные данные от пользователя и создавать новый объект с моим классом "Items".Но я также хочу использовать цикл, чтобы пользователь мог сделать несколько входов, какой цикл использовать, и как он работает, если я хочу, чтобы переменная "foo" изменялась в цикле?

Я пробовал некоторые циклы и пытаюсь поставить "i" после "foo", но не получилось ...

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

Edit: Извините, я думал, что должен все упростить.Виноват!Как сказано в одном из комментариев, я хочу сохранить каждый объект, созданный на каждой итерации.Затем показывает его как «список покупок» с самым дорогим вверху и самым дешевым товаром внизу.

Это одна из вещей, которые я пробовал. (не цикл for, но с той же концепцией i ++ и т. Д.)

        do
        {
       Console.WriteLine("Insert items that you want to buy, when you are finnish, write 'done'");
        Console.Write("Insert a item: ");
            string item = Console.ReadLine();
            switch (item.ToLower())
            {
                case "done":
                    break;

                default:
                    Console.WriteLine("Write a price:");
                    decimal price = Convert.ToDecimal(Console.ReadLine());
                    var foo(i) = new Items(item, price);
                    Console.Write(" {0} {1} ", foo.Item, foo.Price);
                    break;
            }
            i++;
        } while (item != "done");

        //Then show the list in order

Ответы [ 2 ]

1 голос
/ 05 июня 2019

Конечно, компилятор сообщает вам об этой синтаксической ошибке:

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.
0 голосов
/ 05 июня 2019

Вы можете попробовать это также для создания приложения с использованием 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 + ".");
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...