• ベストアンサー

配列

数日前に配列について質問したんですが質問の内容がうまく書けなかったので詳しく書きます。 私はVB.NETを使っています。 Monday,晴,南西,12,88,66 Tuesday,晴曇,南,3,90,77 Wednesday,曇,南東,6,88,56 Thursday,雪,北,15,66,44 Friday,雨,北東,12,70,55 Saturday,雷,東,9,72,56 Sunday,快晴,西,10,77,69 このようなデータが書かれたテキストファイルがあります。 これは曜日、天気の状態、風向き、風速、最高気温、最低気温を表しています。 またメニューバーに”ファイル”、”曜日”を作ります。 ファイルの中には”読み込み”と”終了”を作り、 曜日の中には月、火、水、木、金、土、日を作ります まずファイルの読み込みを押したら月曜日のデータが項目ごとのラベルに表示されるようなプログラムを作りたいんです。   このような感じに・・   状態    晴   風向き   南西   風速    12   最高気温  88   最低気温  66 またメニューの曜日の中で例えば水曜日を押したら水曜日のデータが上と同じように表示されるようにもしたいんです。 このようなプログラムを作りたい時・・ 1.このような配列を作る時どのようなコードになりますか? 2.Private Sub Form1_Load はどのようなコードを組めばいいですか? 最近VBを勉強し始めて一番ここが知りたいんです。 ここのコードの作り方がわからなければ先に進めません。。 ホントに質問が丸投げですいません(><。) でも、できればこのプログラムのコードを教えてください!お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • perse
  • ベストアンサー率74% (113/152)
回答No.2

あなたの作りたいプログラムとは少し違いますが…。 VisualBasic2005で動作確認しました。 tenki.txt(C:\に置いて) Monday,晴,南西,12,88,66 Tuesday,晴曇,南,3,90,77 Wednesday,曇,南東,6,88,56 Thursday,雪,北,15,66,44 Friday,雨,北東,12,70,55 Saturday,雷,東,9,72,56 Sunday,快晴,西,10,77,69 '----------------------------------------- 'Form1.vbに記述 Public Class Form1 Private pstrLine(6) As String Private pstrState() As String = {"状態", "風向き", "風速", "最高気温", "最低気温"} Private pstrday() As String = {"月曜日", "火曜日", "水曜日", "木曜日", "金曜日", "土曜日", "日曜日"} Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim strPath As String = "C:\tenki.txt" 'とりあえず絶対パスで Dim sr As New System.IO.StreamReader(strPath, System.Text.Encoding.Default) For i As Integer = 0 To pstrLine.Length - 1 pstrLine(i) = sr.ReadLine() '一行ずつ読み込んで配列に入れる Next sr.Close() 'メニュー作成 Dim menu As New MenuStrip Dim menuday As New ToolStripMenuItem("曜日") For d As Integer = 0 To pstrday.Length - 1 Dim menudayItem As New ToolStripMenuItem(pstrday(d)) AddHandler menudayItem.Click, AddressOf dayClick menuday.DropDownItems.Add(menudayItem) Next menu.Items.Add(menuday) Me.Controls.Add(menu) End Sub Private Sub dayClick(ByVal sender As Object, ByVal e As EventArgs) Dim strday As String = sender.ToString() Dim intIdx As Integer = 0 Dim strData() As String Dim strMsg As String = "" Try 'どの曜日を押したか判断 For i As Integer = 0 To pstrLine.Length - 1 If pstrday(i) = strday Then intIdx = i Exit For End If Next '押された曜日のデータを,で区切りで配列に入れる strData = Split(pstrLine(intIdx), ",") '表示する For s As Integer = 0 To pstrState.Length - 1 strMsg &= pstrState(s) & "=" & strData(s + 1) & vbCrLf Next MsgBox(strMsg) Catch ex As Exception MsgBox(ex.Message) End Try End Sub End Class

runrun010
質問者

お礼

わざわざこんなに詳しく書いていただいてホントにありがとうございました!! これで一番知りたいところがわかりました☆ 何とかやっていけそうです!

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • SUPER-NEO
  • ベストアンサー率38% (706/1857)
回答No.1

1レコード丸々読み込んで、その1レコードを、 カンマでSplitすればいいんじゃないでしょうか? string s = "Monday,晴,南西,12,88,66"; string[] ss = s.Split(new Char{','}); ↑これが1レコードの分割処理です。 プログラムの内容については、自身でアルゴリズムを考え、 それをコード化してください。

runrun010
質問者

お礼

回答ありがとうございました☆ 基本的な部分はわかった気がします。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • arrayについて

    私はVBでarrayを使ってお天気プログラムというものを作りたいんですが初心者なのでいまいちどのようにコードを組めばいいかわかりません。 月曜日から日曜日までの天気の情報が曜日ごとに表示されるプログラムのことで、テキストファイルにある風速、最高温度、最低温度をラベルに表示させたいのですがどのようなコードを書けばいいんでしょうか?? 例えばメニューバーに月曜日から日曜日をつくり、月曜日をクリックしたら月曜日の風速、最高気温、最低気温をラベルに表示させるようにしたいんですけど。。 まずメニューにLoadをつくり、曜日ごとに天気のデータが載っているテキストファイルの内容をメニューバーのLoadから表示させたい時どのようなコードを組めばいいんですか?? またarrayのコードをどのように組めばいいんですか?? ホントに分からないので教えてください!!!

  • 配列について

    今VBを勉強しています。 気温や風圧、空の状態のデータを曜日毎に表示させるプログラムを作らなければなりません。気温や風圧などをメモ帳に書いた一週間のデータをDesignの中にあるラベルにセットで表示させたいのですがやりかたがわかりません・・・どうすればメモ帳に書いてあるデータを一度に全てのラベルに表示させることができますか?あとできればどのようにしてコードを打つかも教えてください。お願いします。

  • 教えてください!

    ExcelXPで曜日別に稼働日をカウントさせたいのですが、休みの場合はカウントしないようにするにはどのような関数を入力すればいいのか教えてください。下のような表から拾い出しをしたいと思っています。 日付  曜日  天気  客数 1  月曜日  晴れ  100 2  火曜日  休み    3  水曜日  曇り   95 4  木曜日  晴れ  103 5  金曜日  雨    60 6  土曜日  曇り  100 7  日曜日  曇り   86 8  月曜日  休み 9  火曜日  晴れ  100 10 水曜日  晴れ  100 こんな感じで一月の表があります。 大変困っています。どうかよろしくお願いします。

  • csvファイルを整理し、データを生成するプログラム

    cドライブの中にcsvファイルが点在しています(ファイル名は数字にしてあります。123.csv、456.csv、789.csvなど。)。 各csvファイルには 2日,晴れ 3日,雨 4日,曇り という単純なデータが記録されています。 そこで、cドライブからcsvファイルだけをピックアップし、どのcsvファイルにどんな内容が記録されているかを一覧できるプログラムを探しています。 各ファイル名と内容が一覧表示されると大変分かりやすいです。例えば、 123 1日,晴れ 2日,雨 3日,曇り 456 4日,晴れ 5日,雨 6日,曇り 789 7日,晴れ 8日,雨 9日,曇り 上記のような一覧表示ができると大変良いです。 これを実現できるような方法はございませんでしょうか? 何卒よろしくお願いいたします。

  • C言語の課題(関数)での質問です。急いでます。

    C言語の課題(関数)での質問です。急いでます。 C言語の関数のプログラミングついて、ご教授お願いします。 下記のプログラムを関数を用いて実行したいのですが、どのようにすれば良いでしょうか? 回答(できたら簡単な解説)の明記をお願いします。 問題1:入力したプログラムから以下のように出力するプログラムを作成する。 (実行結果例) 文字列を入力: 今日は、晴れです。 今日は、晴れです。 日 す は で 、 れ 晴 晴 れ 、 で は す 日 。すでれ晴、は日 今 問題2:ファイル入力した漢字データ(全角)を読み込み、行数を数えながら逆から表示するプログラム。 (実行結果例) (例として次のような C:\test2.txtを入力する) 今日は、晴れです。昨日は、雨で した。明日は、曇でしょう。明後 日は、快晴でしょうか。 ←の文章を以下のようなプログラムにする。 ファイル名を入力してください:C:\test2.txt 1:で雨、は日昨。すでれ晴、は日今 2:後明。うょしで曇、は日明。した 3:。かうょしで晴快、は日 問題3:ファイルのデータ(英文)を読み込み、一行毎の文字数(スペースも含む)とワード数を数えるプログラム。 (実行結果例) (例として次のような C:\test3.txtを入力する) And friends just can't be found Like a bridge over troubled water I will lay me down ←の文章を以下のようなプログラムにする。 ファイル名を入力してください:C:\test3.txt 1:And friends just can't be found ⇒31文字、6ワード 2:Like a bridge over troubled water ⇒33文字、6ワード 3:I will lay me down ⇒18文字、5ワード 問題4:1月1日が金曜日の平年(たとえば2010年)について、月日の入力データから、曜日を求めるプログラム。 (実行結果例) 月を入力してください:9 日を入力してください:15 9月15日は、水曜日です。 以上4問です。どうか回答よろしくお願い致します

  • C言語の課題(関数)での質問です。急いでます。

    C言語の課題(関数)での質問です。急いでます。 C言語の関数のプログラミングついて、ご教授お願いします。 下記のプログラムを関数を用いて実行したいのですが、どのようにすれば良いでしょうか? 回答(できたら簡単な解説)の明記をお願いします。 問題1:入力したプログラムから以下のように出力するプログラムを作成する。 (実行結果例) 文字列を入力: 今日は、晴れです。 今日は、晴れです。 日 す は で 、 れ 晴 晴 れ 、 で は す 日 。すでれ晴、は日今 問題2:ファイル入力した漢字データ(全角)を読み込み、行数を数えながら逆から表示するプログラム。 (実行結果例) (例として次のような C:\test2.txtを入力する) 今日は、晴れです。昨日は、雨で した。明日は、曇でしょう。明後 日は、快晴でしょうか。 ←の文章を以下のようなプログラムにする。 ファイル名を入力してください:C:\test2.txt 1:で雨、は日昨。すでれ晴、は日今 2:後明。うょしで曇、は日明。した 3:。かうょしで晴快、は日 問題3:ファイルのデータ(英文)を読み込み、一行毎の文字数(スペースも含む)とワード数を数えるプログラム。 (実行結果例) (例として次のような C:\test3.txtを入力する) And friends just can't be found Like a bridge over troubled water I will lay me down ←の文章を以下のようなプログラムにする。 ファイル名を入力してください:C:\test3.txt 1:And friends just can't be found ⇒31文字、6ワード 2:Like a bridge over troubled water ⇒33文字、6ワード 3:I will lay me down ⇒18文字、5ワード 問題4:1月1日が金曜日の平年(たとえば2010年)について、月日の入力データから、曜日を求めるプログラム。 (実行結果例) 月を入力してください:9 日を入力してください:15 9月15日は、水曜日です。 以上4問です。どうか回答よろしくお願い致します

  • 共通で使う配列について

    外部ファイル(複数のページからインクルードされる)に、 配列を定義するのって普通なのでしょうか。 例えば、曜日関係の処理をする場合、 $days = Array(0=>'日', 1=>'月', 2=>'火', 3=>'水', 4=>'木', 5=>'金', 6=>'土'); と言う配列を用意すれば、曜日の一覧を表示することも、 番号に対応する曜日名を取得することもできます。 でも、定数でもないのに、別のファイルで定義された変数を使うのって何だか違和感があります・・・。 (配列が定数として使えれば一番良いんですが) そこで、「曜日の配列を返す関数」を用意すると言う方法(下記参照)も考えました。 function get_days(){ return Array(0=>'日', 1=>'月', 2=>'火', 3=>'水', 4=>'木', 5=>'金', 6=>'土'); } // 特定の曜日名を取得する場合 $days = get_days(); print $days[$number]; 結局やっていることは同じなのですが、関数を呼び出す手間がかかってしまうのもどうなんだろう・・・と思ってしまいます。 みなさんはこのような場合、どういった方法を使っていますか? また、この2つならどちらの方が分かりやすいですか?

    • ベストアンサー
    • PHP
  • 動的配列の使い方の問題

    プログラムには動的配列というものがあり、配列なのですが、最初の宣言でサイズは指定しない(型は指定すると思いますが)というような動作ができるのだろうと思います(それ以外もあるかもですが)。 私が目指しているのはデータの総数がわからないけれど、データファイルを読み込んで総数をカウントしたらわかるのでそれを使ってメモリを確保するというようなことです。事例集を見ると以下のようなものはあります。 allocatable a(:) ..... データファイルを開いてカウントしたら100だった ..... allocate(a(100)) この使い方ってあんまりご利益がないように思います。カウントしたら100だったということですが、その時はデータをとりあえず読んでいるわけです。 配列サイズ100とわかって実際にアロケートしないと配列は利用できないものなのでしょうか。 これに関連して質問ですが、サブルーチンとか関数とか副プログラムに配列を渡して処理する場合、サブルーチン側の配列(仮引数)の型、サイズを指定しない方法があるでしょうか。メイン側で決めたものに従いますということなのですが。 例えばサブルーチン側の仮引数BについてB(*)などとしていたらメイン側の指定通りになっているということになるのでしょうか。動的な配列ということでお尋ねしているのですが、副プログラムの仮引数の配列がサイズ依存が消えたように見えるからこちらの方が動的に見えるのですが。サイズに関してはメインで宣言したらどうにでも対応します、という弾力性があります。もちろ使いまわしも容易になりますが。 言語ですが、お気づきとは思いますが、Fortranです(ハズイ感じ)。その他の言語の仕様でも参考になります。よろしくお願いします。

  • ファイルの読み込み、配列に格納

    お世話になります。Java初心者です Javaプログラムを実行する同じディレクトリにあるテキストファイルとデータファイルをコマンドラインで同時に読み込み それぞれ違う配列に格納したいのですが、1つのファイルの読み込みは出来ても2つ同時の読み込みと配列格納でつまづいています。 読み込むテキストファイルには以下のような1行の文が、 Dr. Fujita is great! 読み込むデータファイルには以下のような文字が書かれています。 AC 4C 7C 10C KC 3D 6D 9D QD JB 3C 6C 9C QC 2D 5D 8D JD JA 2C 5C 8C JC AD 4D 7D 10D KD 配列に格納する際、テキストファイルの場合は全て大文字にし、アルファベット以外の記号(スペース含)は全て消して配列に格納します。 上の例でいえばこのような状態で格納です↓ DRFUJITAISGREAT データファイルの場合は、2組1文字をそのまま配列に格納です。ただしスペースは飛ばします。 上の例でいえば、ACを配列0に、4Cを配列1に、7Cを配列2に、、、と格納していきます。 import java.io.*; public class sample{ public static void main(String[] args){ try{ FileReader f = new FileReader(args[0]); BufferedReader b = new BufferedReader(f); Strings; while((s=b.readLine())!=null){ System.out.println(s); ←読み込んでるか確認 } }catch(Exception e){ System.out.println(no file); } } } ファイルの指定は実行時に、java sample datafile.dat textfile.txt と指定します。 読み込むプログラムは以上のように書いたのですが、2つファイルを読み込むにはどのように記述したらよいのでしょうか。 FileReaderを2つ作成?しても最初に指定したデータファイルの内容がまた読み込まれるだけで・・・ 読み込んだら変数sに入りますが、たとえばs.substring()なんかでわけて配列に入れようとしても、s.substring()←ここでエラーが出てしまいます。 あと、Dr. Fujita is great!のアルファベットを大文字にし、記号(スペース含)を飛ばして格納するにはどうしたらよいのでしょうか。 宜しくお願いします

    • ベストアンサー
    • Java
  • Access2000レポートについて

    初めて質問させていただきます。舌足らずな点がありましたらご容赦下さい。 Access2000で次の様なデータを作成しました 日付 天気 備考 日付を指定して、1週間の週報レポート作成をする場合、日付と天気は「詳細セクション」に表示し 備考は「レポートフッター」に日付と備考を表示させたいのですが、可能でしょうか。なるべく簡単な方法でできれば良いのですが。よろしくご教示下さい。 イメージは   日付   天気 ----------------詳細-----------------------------    4/1   晴れ    4/2   晴れ    4/3   曇り    4/4   雨    4/5   曇り    4/6   晴れ    4/7   曇り -----------------レポートフッター-----------------            備考         4/1 桜5部咲き                       4/2 水温5℃                       4/4 風速2m                       4/7 桜満開