2017-04-26 26 views
-2

我正在爲大學項目編寫一個基於控制檯的計算器應用程序,並且遇到了一些錯誤。F#添加到可變列表

當用戶從菜單(1,2,3,4等)中選擇一個選項時,他們可以輸入2個數字並加上,減去,除或乘以總和。每個成功的總和解決並顯示後,我希望他們被添加到我的名單sumHistory

這是我的代碼目前,我覺得它應該工作,但我顯然遇到了一些小而愚蠢的事情,以防止列表顯示時被告知!

let sumHistory = new List<string>() 

match input with 
|"1" -> Console.WriteLine("Please enter 2 integers: ") 
     let a= Console.ReadLine() 
     let b= Console.ReadLine() 
     let A: int = int32 a 
     let B: int = int32 b 
     let C = (add A B) 
     let D = (string A + " + " + string B + " = " + string C) 
     Console.WriteLine(D) 
     sumHistory.Add(D)  
|"2" -> Console.WriteLine("Please enter 2 integers: ") 
     let a= Console.ReadLine() 
     let b= Console.ReadLine() 
     let A: int = int32 a 
     let B: int = int32 b 
     let C = (sub A B) 
     let D = (string A + " - " + string B + " = " + string C) 
     Console.WriteLine(D) 
     sumHistory.Add(D) 
|"3" -> Console.WriteLine("Please enter 2 integers: ") 
     let a= Console.ReadLine() 
     let b= Console.ReadLine() 
     let A: int = int32 a 
     let B: int = int32 b 
     let C = (div A B) 
     let D = (string A + "/" + string B + " = " + string C) 
     Console.WriteLine(D) 
     sumHistory.Add(D) 
|"4" -> Console.WriteLine("Please enter 2 integers: ") 
     let a= Console.ReadLine() 
     let b= Console.ReadLine() 
     let A: int = int32 a 
     let B: int = int32 b 
     let C = (mul A B) 
     let D = (string A + " * " + string B + " = " + string C) 
     Console.WriteLine(D) 
     sumHistory.Add(D) 
|"5" -> sumHistory |> Seq.iteri (fun index item -> printfn "%i: %s" index sumHistory.[index]) 
|"6" -> let data = ReadInText() 
     data.Read() 
+1

重構項目和應用良好的SE原則是一個標記的整體另一大塊,我只是試圖讓事情在這一刻工作@FyodorSoikin :) – Alex

回答

-1

[解決]

通過我自己的代碼實際上看完後,我意識到這只是一個愚蠢的錯誤。

該清單已在while內申報,因此在每筆款項後重新清算!

let sumHistory = new List<string>()移動到名稱空間聲明下方的文檔頂部即可解決此問題。