我正在創建一個小程序,它接受用戶輸入(字符串和小數),並在菜單中選擇「查看摘要」選項時將其打印回用戶。如何在集合中保存具有多個變量類型的對象以稍後調用?
菜單根據用戶輸入循環切換,帳戶名稱/帳戶餘額將在請求/輸入後立即打印,但是一旦選擇了選項3,我就無法保存並打印它們。儘管有任何投入,「視圖總結」表示資產爲0,債務爲0。
Account類有一個字符串名稱和十進制餘額,我只希望它保存到用戶完成。 (無數據庫只是試圖讓概念現在)
我的主要問題:
這是因爲循環/應該名單是他們之外捕獲數據?
字典是一個更好的主意,我可以從一個空集合開始?
static void Main(string[] args)
{
string menuChoice;
string response;
do
{
// Welcome/Menu screen
Console.WriteLine("\nWelcome to your Net Worth Calculator.\n \n MENU:\n 1. Add Asset\n 2. Add Debt\n 3. View Summary");
Console.WriteLine(" ");
Console.WriteLine("What would you like to do?\nPlease make a selection: ");
menuChoice = Console.ReadLine();
Account asset = new Account();
var accountList = new List<Account>();
if (menuChoice == "1")
{
do
{ //D1
Console.WriteLine("\nGreat! Let's add an account.");
Console.WriteLine("Account name:");
asset.name = Console.ReadLine();
Console.WriteLine("Your account name is: " + asset.name);
Console.WriteLine("\nWhat is your current account balance with " + asset.name + "?");
Console.WriteLine("Balance:");
asset.balance = Decimal.Parse(Console.ReadLine());
accountList.Add(asset);
Console.WriteLine("Your balance with " + asset.name + " is currently $" + asset.balance + ".");
Console.WriteLine("\n\nWould you like to add another account? y/n");
response = Console.ReadLine();
} while (response != "n");
}
if (menuChoice == "3")
{
//D3
Console.WriteLine("Let's take a look at the accounts and balances that you've added so far:");
Console.WriteLine($"{asset.balance} is your asset, and {debt.balance} is your debt.");
decimal netWorth = asset.balance - debt.balance;
Console.WriteLine(netWorth);
Console.WriteLine($"{ asset.balance}");
Console.WriteLine("\n\nWould you like to add another account? y/n");
response = Console.ReadLine();
}
您正在使用的WriteLine格式特定於C#6.0。你在使用該版本嗎? – user2867342
這基本上就是你說的,你在循環內創建一個'accountList'的新實例,所以每次你都會丟失上次的數據。將它移到循環之外。您需要更改'if'語句中的代碼以進行選擇3以遍歷'accountList'來彙總必要的數據。 – Equalsk
您可能希望每次在循環周圍創建一個新的Account對象。目前,您只是分配給同一個實例並將其重新添加到集合 – user2867342