2017-04-26 16 views
-2

私は、大学プロジェクト用のコンソールベースの電卓アプリケーションを作成していますが、少しエラーがあります。F#変更可能リストへの追加

ユーザがメニュー(1,2,3,4など)からオプションを選択すると、2つの数字を入力し、合計を加算、減算、除算または乗算することができます。成功した合計が解決されて表示されたら、それらをリストsumHistoryに追加します。

ここに私のコードはありますが、それはうまくいくはずですが、私は明らかに何か小さなものに遭遇しています。 [SOLVED]

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>()を名前空間宣言の直下の文書の先頭に移動すると、これが解決されました。

関連する問題