比方说,给出了可用物品数量的数组。
int [,] AvailableQuantity= new int[3,4]
{
{ 4, 5, 2, 3 },
{ 2, 7, 3, 4 },
{ 9, 3, 5, 6 }
};
如果用户购买了3件商品[0,0],则必须使用以下可用的当前数量更新AvailableQuantity数组:
{
{ 1, 5, 2, 3 },
{ 2, 7, 3, 4 },
{ 9, 3, 5, 6 }
};
同样,如果购买了2件商品,例如[0,1],则数组应如下所示:
{
{ 1, 3, 2, 3 },
{ 2, 7, 3, 4 },
{ 9, 3, 5, 6 }
};
每次购买和更新任何物品时,必须更新数量。然后,当应用程序关闭时,必须将数组保存在文本文件中,如下所示。
1 3 2 3
2 7 3 4
9 3 5 6
如何执行?
答案 0 :(得分:3)
答案似乎太明显了,所以我可能会遗漏一些东西。如果用户选择以1,3的价格购买商品,则可以相应地以1,3的数量减少数量。这就是为什么有两个数组,所以可以重新使用索引的原因-还是不可以?
但是这种设计似乎也有缺陷。通常,您不会像这样放置两个并行数组。取而代之的是,创建一个自定义类“产品”,其中包含价格,数量,名称以及以后可能需要使用的所有其他内容的字段(例如用于显示它的名称)。然后,您创建该Product[] Products = new Products[10];
的数组。但是,您可能仍在学习如何编写课程之前。
关于将整个内容保存到文本文件中:XML和CSV是此类简单数据的常用格式。对于少量数据,CSV甚至可能更具可读性。但这通常是一个单独的问题。
答案 1 :(得分:0)
using System;
using System.IO;
using System.Text;
class Program
{
/// <summary>
/// Static Multidimensional Array what have products quantity.
/// </summary>
static int [,] AvailableQuantity = new int[3,4]
{
{ 4, 5, 2, 3 },
{ 2, 7, 3, 4 },
{ 9, 3, 5, 6 }
};
/// <summary>
/// Main Console Call.
/// </summary>
/// <param name="args"></param>
public static void Main(string[] args)
{
string path = Environment.CurrentDirectory + "\\file.txt";
// TEST
Purchase_Item(3, 0, 0);
Purchase_Item(2, 0, 1);
Save_File(path, Generate_String_File());
System.Diagnostics.Process.Start("notepad.exe", path);
Console.Write("Press any key to continue . . . ");
Console.ReadKey(true);
}
/// <summary>
/// Edit static int Multidimensional Array. (M.A)
/// </summary>
/// <param name="cuantity">The cuantity of the item what has ben purchased.</param>
/// <param name="row">Row that you want to edit in the M.A.</param>
/// <param name="column">Column that you want to edit in the M.A.</param>
private static void Purchase_Item(int cuantity, int row, int column){
try {
if(row > AvailableQuantity.GetLength(0) || row < 0){
Console.WriteLine("Row - Out of Range");
return;
}
if(column > AvailableQuantity.GetLength(1) || column < 0){
Console.WriteLine("Column - Out of Range");
return;
}
int cuantity_in_row = AvailableQuantity[row, column];
if(cuantity > cuantity_in_row){
Console.WriteLine("Not enough items!");
return;
}
AvailableQuantity[row, column] = cuantity_in_row - cuantity;
} catch (Exception eX) {
Console.WriteLine(eX.ToString());
}
}
/// <summary>
/// Generate string file, with the format (worst format ever).
/// </summary>
/// <returns>text that will be saved.</returns>
private static string Generate_String_File(){
string line = string.Empty;
string full_text = string.Empty;
for (int row = 0; row < AvailableQuantity.GetLength(0); row++) {
line = string.Empty;
for (int column = 0; column < AvailableQuantity.GetLength(1); column++) {
line += AvailableQuantity[row, column].ToString() + " ";
}
line = line.Remove(line.Length-1);
full_text += line + Environment.NewLine;
}
full_text = full_text.Remove(full_text.Length-1);
return full_text;
}
/// <summary>
/// Save the file at the asing path.
/// </summary>
/// <param name="path">location where will go the file.</param>
/// <param name="text">text that will be included at the file.</param>
private static void Save_File(string path, string text){
try {
File.WriteAllText(path, text);
} catch (Exception eX) {
Console.WriteLine(eX.ToString());
}
}
}
我不是专家,但我想那一定是那样的... 请不要为此而杀了我,这只是您想要的最糟糕的实现。