C # Stream Writer: как писать числа на новых строках? - PullRequest
0 голосов
/ 27 мая 2018

Я хочу сделать функцию записи потока, где я могу записывать числа несколько раз и в конце программы показать мне сумму этих чисел.как я могу закодировать эту вещь?

public static void bought(float a)
    {
        StreamWriter SW = new StreamWriter(@"C:\Users\ETN\source\repos\Apple-store\Apple-store\buy.txt");
        SW.Write(a);
        SW.Close();

    }

1 Ответ

0 голосов
/ 27 мая 2018

Есть пара вещей, которые вы бы хотели изменить в своем коде.В частности:

  • Вы открываете потоковую запись, записываете значение one и закрываете его.Если у вас уже нет списка значений, которые вы хотите записать, вы обычно открываете и закрываете средство записи потоков один раз и вызываете его несколько раз.
  • Когда вы хотите добавить новую строку послезаписанное значение, вы используете WriteLine вместо Write.
  • Когда вы записываете числовые значения в текстовый файл, они будут преобразованы в текст в зависимости от языка.Обратите внимание, что по умолчанию используется культура вашей системы.Если вы читаете файл с другого компьютера с другой культурой, файл может быть нечитаемым.Поэтому вы всегда должны предоставлять определенную культуру.Чтобы сделать это, проверьте метод Convert.ToString.
  • Вы должны заключить свой код, который пишет в потоковую запись, в блок try / finally, с методом StreamWriter.Close() в finally,В противном случае ваш файл не будет гарантированно закрыт в случае ошибки.
  • Не рекомендуется хранить денежную информацию (например, цены или остатки на счетах) как float.Вместо этого используйте decimal, который оптимизирован для этой цели (в отличие от float, который предназначен для научных расчетов).

Этот код должен дать вам преимущество в решении проблемы.Это зависит от вас, чтобы завершить это и организовать его в методы, классы и т. Д., В зависимости от ваших конкретных требований:

StreamWriter writer = new StreamWriter(@"C:\Users\ETN\source\repos\Apple-store\Apple-store\buy.txt");
try {
    while (true) {
        decimal price:
        //Your code that determines the price goes here
        string priceText = Convert.ToString(price, CultureInfo.InvariantCulture);
        writer.WriteLine(priceText);

        bool shouldContinue;
        //Your code that determines whether there are more values to be written goes here
        if (!shouldContinue) {
            break;
        }
    }
    writer.Flush();
}
finally {
    writer.Close();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...