2次元配列から1次元配列への変換(抽出?)方法について
投稿者 るしぇ  (社会人)
投稿日時
2008/12/26 23:27:09
>Dim student() As String
これだと配列の先頭アドレスを決めただけで、いくつデータの部屋を
確保するか決めてない為、データを入れられる部屋が無い状態です。
具体的な配列の長さを指定してください。
Dim student(Students.Length - 1) As String
とか?
。。。ただ、ループの条件もなんか変な気がしますが。。。
i を 0 から Students.Length - 1 まで何回かまわすの?
これだと配列の先頭アドレスを決めただけで、いくつデータの部屋を
確保するか決めてない為、データを入れられる部屋が無い状態です。
具体的な配列の長さを指定してください。
Dim student(Students.Length - 1) As String
とか?
。。。ただ、ループの条件もなんか変な気がしますが。。。
i を 0 から Students.Length - 1 まで何回かまわすの?
投稿者 あーれー  (学生)
投稿日時
2008/12/26 23:56:12
るしぇさん返答ありがとうございます。
配列は先に長さを指定しないといけないんですね。
ものすごく基礎的なことがわかっておらず、すいません。
Students配列のデータを、データもないものも含めてすべて
student配列にしたいのですが、これじゃあ駄目ですか?
students.lengthが124なのでfor文で124回(・・・あっ、-1いらないですね。)
student配列を作ろうとしたつもりでした。
作り直してみると、全データが渡良瀬になってるようです。
かなりしょぼい内容ですが、ご教授願いたいと思います。
よろしくお願いします。
配列は先に長さを指定しないといけないんですね。
ものすごく基礎的なことがわかっておらず、すいません。
Students配列のデータを、データもないものも含めてすべて
student配列にしたいのですが、これじゃあ駄目ですか?
students.lengthが124なのでfor文で124回(・・・あっ、-1いらないですね。)
student(i) = st
を行い、124個のデータを持ったstudent配列を作ろうとしたつもりでした。
Dim student(Students.Length) As String
で作り直してみると、全データが渡良瀬になってるようです。
かなりしょぼい内容ですが、ご教授願いたいと思います。
よろしくお願いします。
投稿者 neptune  (社会人)
投稿日時
2008/12/27 00:09:43
こんにちは
最初のソースの通りなら
iの値の変化をステップ実行してみてみましょう。
>For i As Integer = 0 To Students.Length - 1
がまずいことが判ると思います。
iをfor文が実行される度に初期化されてますからね。
最初のソースの通りなら
iの値の変化をステップ実行してみてみましょう。
>For i As Integer = 0 To Students.Length - 1
がまずいことが判ると思います。
iをfor文が実行される度に初期化されてますからね。
投稿者 あーれー  (学生)
投稿日時
2008/12/27 00:28:26
こんにちは、neptuneさん。返答ありがとうございます。
ステップ実行、初級講座の第41回を参考に行ってみました。
いろいろな変数の変化を確認することができるんですね。すごい!
今後どんどん使いたいと思います。
ステップ実行、初級講座の第41回を参考に行ってみました。
いろいろな変数の変化を確認することができるんですね。すごい!
今後どんどん使いたいと思います。
投稿者 るしぇ  (社会人)
投稿日時
2008/12/27 20:34:45
For Each は順番を気にしなくて良いときのみに
使うほうが良いです。
使うほうが良いです。
Dim Students(3, 30) As String
Students(0, 0) = "相原"
Students(0, 1) = "赤井"
Students(0, 2) = "井口"
Students(0, 3) = "0,3"
Students(0, 30) = "0,30"
Students(1, 0) = "1,0"
Students(1, 30) = "1,30"
Students(2, 0) = "2,0"
Students(3, 30) = "渡良瀬"
Dim student(Students.Length - 1) As String
For i As Integer = 0 To Students.GetLength(0) - 1
For j As Integer = 0 To Students.GetLength(1) - 1
student(i * Students.GetLength(1) + j) = Students(i, j)
Next
Next
投稿者 あーれー  (学生)
投稿日時
2009/1/5 22:18:56
るしぇさん。ありがとうございます。
るしぇさんのおっしゃるとおり、For Each は順番を気にしなくて良いときのみに
使うことにします。
るしぇさんのおっしゃるとおり、For Each は順番を気にしなくて良いときのみに
使うことにします。
2次元の配列を1次元に変換したいのですが、やり方がわからないので、
教えていただけないでしょうか。
よろしくお願いします。
●のところで『オブジェクト参照がオブジェクト インスタンスに設定されていません。』となってしまいます。
Dim Students(3, 30) As String
Students(0, 0) = "相原"
Students(0, 1) = "赤井"
Students(0, 2) = "井口"
Students(3, 30) = "渡良瀬"
Dim student() As String
Dim st As String
For Each st In Students
For i As Integer = 0 To Students.Length - 1
● student(i) = st ●
Next
Next