CSVファイル内の要素を配列に格納し、最大値および最小値を求めたい。
Visual Studio 2019のWindowsフォームアプリケーション(.NETFrameworks)を使用しております。
下記のようなコードでCSVファイルを読み込み要素をstring型からint型に変換し、
数値情報として新規CSVファイルに格納しております。格納した配列から最大値(および最小値)を求めたいのですが、Max()の関数では行ごとの最大値しか表示されないようでデータ全体から要素の最大値を抽出する方法がわかっておりません。データを1行ごとに配列に格納するのではなく、1要素ごとに独立して格納させる方法についてご存知の方おられましたら、ご教授願います。
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
ソースコード using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Drawing.Imaging; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using OpenCvSharp; using OpenCvSharp.Extensions; using System.Runtime.InteropServices; using System.Windows; using System.Windows.Media; using System.Windows.Media.Imaging; using System.IO; using System.Diagnostics; using AForge.Imaging.Filters; using ImagingSolution.Imaging; namespace image { public partial class Form1 : Form { public static int[] Array; public static int T, Y; public Form1() { InitializeComponent(); StreamReader sr = new StreamReader(@"D:\sources\1_map.txt"); { while (!sr.EndOfStream) { string line = sr.ReadLine(); string[] values = line.Split('\t'); List<string> lists = new List<string>(); lists.AddRange(values); for (int i=0;i<lists.Count;i=i+1) { int[] intArray = lists.Select(int.Parse).ToArray(); //Array = intArray; var create = true; using (var sw = new System.IO.StreamWriter(@"D:\sources\test_map.csv", create)) { sw.WriteLine(intArray[i]); } } hgt++; Y = values.Length;//画像横の長さ(画素数) } } T = hgt;//画像縦の長さ label9.Text = Convert.ToString(T+","+Y+","); Bitmap img = new Bitmap(Y, T); Graphics g = Graphics.FromImage(img); img.Save(@"D:\sources\new1.jpg"); } }
試したこと
while()内のfor()内部に整数型の変数で1ずつ加算し、データの点数を記録することはできましたが
それを使用して
int cnt = 0;
while(){
for(){
...
Array[cnt + i] = intArray[i];
cnt++;
}
}
のようにグローバル変数に格納しようとしたところ
「オブジェクト参照がオブジェクト インスタンスに設定されていません。」
の例外処理となってしまいました。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/08 07:13
2020/01/08 08:20