目前我正在學習一種新的程式語言,即 F#。現在,我正在做一個關于食品訂購系統的專案。而且,我目前遇到的一個問題是,當我完成所有訂購后,系統會提示“您要繼續購買嗎?”。然后我輸入與條件相關的小y和大Y,但系統立即給我“感謝您購買”并按任意鍵繼續陳述。有沒有人有任何想法來處理這個問題?謝謝謝謝。
open System
let menu()=
printfn "---------------------------------------"
printfn " Food ordering system"
printfn "---------------------------------------"
printfn "1. ORDER FOOD "
printfn "2. ORDER DRINK"
Console.Write("Enter your selection : ")
let loop()=
Console.Write("Do you want to continue pruchase?:")
let choice=Console.ReadLine()
if(choice="y"||choice="Y")then
menu()
let food()=
printfn "\n1.MCD CHICKEN RM 10 \n2.FILET-O-FISH RM 13 \n3.FRENCH FRIES RM 5 \n4.APPLE PIE RM 4"
Console.Write("\nEnter food code that you want :")
let option=Console.ReadLine()
Console.Write("How many you want :")
let qty=Console.ReadLine()
if(option = "1")then
let price = 10
let total = int qty*int price
Console.Write("\nThe price for {0} set MCD CHICKEN ",qty)
Console.Write("is RM {0} \n",total)
loop()
Console.Write("\nThank you for your purchase ")
elif(option = "2")then
let price = 13
let total = int qty*int price
Console.Write("\nThe price for {0} set FILET-O-FISH ",qty)
Console.Write("is RM {0} \n",total)
loop()
Console.Write("\nThank you for your purchase ")
elif(option = "3")then
let price = 5
let total = int qty*int price
Console.Write("\nThe price for {0} FRENCH FRIES ",qty)
Console.Write("is RM {0} \n",total)
loop()
Console.Write("\nThank you for your purchase ")
elif(option = "4")then
let price = 4
let total = int qty*int price
Console.Write("\nThe price for {0} APPLE PIE ",qty)
Console.Write("is RM {0} \n",total)
loop()
Console.Write("\nThank you for your purchase ")
else
printfn "Invalid input"
menu()
let drink()=
printfn "\n1.ICE BLENDED CHOCOLATE MEDIUM RM 8 \n2.MANGO PEACH RM 11 \n3.PEPSI RM 4 \n4.ICE LEMON TEA RM 4"
Console.Write("\nEnter beverage code that you want :")
let option=Console.ReadLine()
Console.Write("How many you want :")
let qty=Console.ReadLine()
if(option = "1")then
let price = 8
let total = int qty*int price
Console.Write("\nThe price for {0} ICE BLENDED CHOCOLATE MEDIUM ",qty)
Console.Write("is RM {0} \n",total)
loop()
elif(option = "2")then
let price = 11
let total = int qty*int price
Console.Write("\nThe price for {0} MANGO PEACH ",qty)
Console.Write("is RM {0} \n",total)
loop()
Console.Write("\nThank you for your purchase ")
elif(option = "3")then
let price = 4
let total = int qty*int price
Console.Write("\nThe price for {0} PEPSI ",qty)
Console.Write("is RM {0} \n",total)
loop()
Console.Write("\nThank you for your purchase ")
elif(option = "4")then
let price = 4
let total = int qty*int price
Console.Write("\nThe price for {0} ICE LEMON TEA ",qty)
Console.Write("is RM {0} \n",total)
loop()
Console.Write("\nThank you for your purchase ")
else
printfn "Invalid input"
menu()
let main()=
menu()
let selection=Console.ReadLine()
if(selection = "1") then
food()
else
drink()
main()
uj5u.com熱心網友回復:
這不是重繪 緩沖區的問題。您正在呼叫menufrom loop,但在繼續之前不等待用戶的輸入。
解決此問題的一種方法是將ReadLine呼叫移入menu,但隨后您將遞回呼叫foodand drinkfrom menu,它已經從loop內部food和呼叫drink。這會創建可能不是您真正想要的嵌套控制流。
相反,我建議重新考慮設計,以便不同級別之間的依賴關系是干凈的。每個函式都應該回傳一個由其呼叫函式使用的值,而不是包含回傳選單的回圈。
uj5u.com熱心網友回復:
老實說,這段代碼在很多方面都過于命令式和非慣用的 F#。
我謙虛地建議您將此代碼發布到https://codereview.stackexchange.com/并在那里獲得代碼審查以從中學習。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/336607.html
上一篇:在shell腳本中呼叫鏈碼函式
