c# stream writer:如何在新行上写数字?
c# stream writer: how to write numbers on new lines?
我想制作流写入器功能,我可以在其中多次写入数字,并在程序结束时显示这些数字的总和。我该如何编写代码?
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();
}
您希望在代码中更改几处内容。特别是:
- 您正在打开流写入器,写入 一个 值并关闭它。除非您已经有了要写入的值列表,否则您通常会打开和关闭流写入器 一次 并多次调用它。
- 当您想在写入值后添加新行时,请使用
WriteLine
而不是 Write
。
- 当您将数值写入文本文件时,它们将根据区域性转换为文本。请注意,默认值是您系统的文化。如果您从具有不同文化的另一台计算机读取该文件,则该文件可能无法读取。因此,您应该始终提供特定的文化。为此,请检查
Convert.ToString
方法。
- 您应该将写入流写入器的代码包含在
try
/finally
块中,并在 finally
中使用 StreamWriter.Close()
方法。否则不保证您的文件在发生错误时被关闭。
- 不建议将货币信息(例如价格或账户余额)存储为
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();
}
我想制作流写入器功能,我可以在其中多次写入数字,并在程序结束时显示这些数字的总和。我该如何编写代码?
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();
}
您希望在代码中更改几处内容。特别是:
- 您正在打开流写入器,写入 一个 值并关闭它。除非您已经有了要写入的值列表,否则您通常会打开和关闭流写入器 一次 并多次调用它。
- 当您想在写入值后添加新行时,请使用
WriteLine
而不是Write
。 - 当您将数值写入文本文件时,它们将根据区域性转换为文本。请注意,默认值是您系统的文化。如果您从具有不同文化的另一台计算机读取该文件,则该文件可能无法读取。因此,您应该始终提供特定的文化。为此,请检查
Convert.ToString
方法。 - 您应该将写入流写入器的代码包含在
try
/finally
块中,并在finally
中使用StreamWriter.Close()
方法。否则不保证您的文件在发生错误时被关闭。 - 不建议将货币信息(例如价格或账户余额)存储为
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();
}