2013-09-01 49 views
1

試圖爲我的C#類製作一個基本的ATM程序。C#基本的ATM,菜單顯示的控制流程

總之,該程序有4個帳戶已存儲整數值。該程序必須首先顯示用戶想要採取的行動(顯示餘額,提款,轉賬),然後讓用戶選擇菜單,並允許他們在程序中執行他們希望執行的任何任務。

只是有問題,我的Display Balance menu。想要詢問用戶是否想要顯示另一個餘額,並重新啓動Display Balance菜單部分(此處的代碼部分)。這裏是我有:

if (ACCselect == 1) 
{ 
    string yesno1 = " "; 
    int dispSEL = 1; 

    Console.WriteLine(); 
    Console.WriteLine("$$$===Display Balance===$$$"); 
    Console.WriteLine(); 
    Console.WriteLine("\t 1) Savings Account"); 
    Console.WriteLine("\t 2) Debit Card Account"); 
    Console.WriteLine("\t 3) Credit Card Account"); 
    Console.WriteLine("\t 4) Investment Account"); 
    Console.WriteLine(); 
    Console.Write("Select account with 1-4: "); 

    dispSEL = int.Parse(Console.ReadLine()); 
    DisplayBalance(dispSEL); 

    Console.WriteLine(); 
    Console.Write("Would you like to select another account? (y/n): "); 
    yesno1 = Console.ReadLine(); 
    if (yesno1.ToUpper() == "Y") 
    { 
     yesno1a = true; 
    } 
    else 
    { 
     Main(); 
    } 
} while (yesno1a == true) 

這是Main()的一部分。 ACCselect指的是用戶所做的選擇,他們是否想要顯示餘額,提款等。

DisplayBalance()方法從數組中選擇合適的整數值並顯示相應的餘額。

如何讓我的程序重複這段代碼,如果用戶選擇「y」? 如果用戶選擇「n」,它將循環回Main()方法的頂部。

任何幫助將是超級有用的。

回答

0

我在回答這個問題,因爲我在第一年做了類似的事情,並且犯了類似的錯誤。

首先,您要撥打Main才能「跳轉」到Main的開頭。這有效,但它會給你Main嵌套調用。 Main已成爲遞歸。一旦您退出內部Main調用,您將跳轉到仍在運行的外部Main。嘗試回答「n」,然後嘗試退出該程序。你將不得不退出兩次。

如果你想,直到條件爲真時重複一個動作,你可以用這個模式:

while(true) { //loop forever 
if (SomeCondition()) break; //exit 
else { 
    DoStuff(); 
} 
} 

適用於您的問題,它是這樣的:

while(true) { //loop forever 
dispSEL = int.Parse(Console.ReadLine()); 
DisplayBalance(dispSEL); 

Console.Write("Would you like to select another account? (y/n): "); 
yesno1 = Console.ReadLine(); 

if (yesno1 == "n") break; //exit 
else continue; //next loop iteration 
} 

希望幫助。隨意在評論中提出後續問題。