LoginSignup
0
1

More than 3 years have passed since last update.

C# 勉強(3) ファイル入力

Last updated at Posted at 2020-05-24

ファイルを入力し店舗別売上を集計する。

1、プログラム

:Program.cs
using System;
using System.Collections.Generic;
using System.IO;


namespace Sec0225
{
    class Program
    {
        static void Main(string[] args)
        {
            SalesCounter sales = new SalesCounter(ReadSales("sales.csv"));
            Dictionary<string,int> amountPerStore = sales.GetPerStoreSales();
            foreach(KeyValuePair<string,int>obj in amountPerStore){
                Console.WriteLine("{0}{1}",obj.Key,obj.Value);
            }
        }
        static List<Sale>ReadSales(string filePath){
            List<Sale>sales = new List<Sale>();
            string[] lines = File.ReadAllLines(filePath);       //テキストファイル読む
            foreach(string line in lines){                      //1行づつ処理
                string[]items = line.Split(',');                //行を分解
                Sale sale = new Sale{                           //分解したデータからオブジェクト作成
                    ShopName = items[0],
                    ProductCategory = items[1],
                    Amount = int.Parse(items[2])
                };
                sales.Add(sale);                                //オブジェクトをリストに追加
            }
            return sales;                                       //結果を返す
        }
    }
}

2.クラス

:Sale.cs
using System;

namespace Sec0225{
    public class Sale{
        public string ShopName { get; set; }
        public string ProductCategory { get; set; }
        public int Amount { get; set; }
    }
}
:SalesCounter.cs
using System;
using System.Collections.Generic;

namespace Sec0225{
    public class SalesCounter{
        private List<Sale> _sales;

        public SalesCounter(List<Sale>sales){
            _sales = sales;
        }
        public Dictionary<string,int> GetPerStoreSales(){
            Dictionary<string,int> dict = new Dictionary<string, int>();
            foreach(Sale sale in _sales){
                if(dict.ContainsKey(sale.ShopName))
                    dict[sale.ShopName]+=sale.Amount;
                else
                    dict[sale.ShopName]=sale.Amount;
            }
            return dict;
        }
    }
}
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1