出産前後の痔にはご注意!

二次元配列に関して質問があります。

二次元配列を定義します。
Dim a(,) As Integer = _
{{0, 0, 0, 0, 0, 0, 1, 1, 1}, _
{0, 0, 0, 0, 0, 1, 0, 0, 1}, _
{0, 0, 0, 0, 0, 0, 1, 1, 1}}

一次元配列を定義します。
Dim b() As Integer

一次元配列のb()に二次元配列a(,)の
{0, 0, 0, 0, 0, 0, 1, 1, 1}の部分を
入れようとした場合、
どのように記載すればよろしいでしょうか?
イメージ的には
b = a(0)
で出きると思ったのですが、
構文エラーとなってしまいます。

よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

  求めているものとは違く、また既にご存知のものかもしれませんが・・・。



  2次元配列の定義を以下のようにすれば、ご希望の操作が出来ます。

  ※配列の定義が(,)ではなく()()になるため、2次元配列の参照が変わります。

  '----------------------------------------------------------------------------
  Dim array_a()() As Integer = _
                {New Integer() {0, 0, 0, 0, 0, 0, 1, 1, 1}, _
                New Integer() {0, 0, 0, 0, 0, 1, 0, 0, 1}, _
                New Integer() {0, 0, 0, 0, 0, 0, 1, 1, 1}}

  Dim b() As Integer
  Dim c As Integer

  b = array_a(0)   ' {0, 0, 0, 0, 0, 0, 1, 1, 1}の部分を代入
  b = array_a(1)   ' {0, 0, 0, 0, 0, 1, 0, 0, 1}の部分を代入

  c = array_a(2)(7)  ' {0, 0, 0, 0, 0, 0, 1, 1, 1}の7番目 '1'を代入

  '----------------------------------------------------------------------------
    • good
    • 1
この回答へのお礼

ありがとうございます。
この方法でうまくいきました。

お礼日時:2007/04/05 10:15

ループを回すのが、スタンダードなアルゴリズムだと思います。

    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

お礼日時:2007/04/05 10:15

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QArrayListの初期値に二次元配列を設定したい(VB2005)

下記は、aryhogeにTextBoxオブジェクトを格納する処理です。

----------------------------------------
'a)
Dim hoge()() As TextBox = _
      {New TextBox() {txta01, txtb01, txtc01}, _
      New TextBox() {txta02, txtb02, txtc02}, _
      New TextBox() {txta03, txtb03, txtc03}}

Dim aryhoge As New ArrayList    'b)

aryhoge.Add(hoge(0))
aryhoge.Add(hoge(1))
aryhoge.Add(hoge(2))
----------------------------------------

(a)を(b)の初期値として設定するにはどのようにすればよいか、ということが質問内容です。

試しに(b)の部分を以下のようにしてみましたが、「1次元配列の値を変換できない」とのエラーが出ました。
Dim aryhoge As New ArrayList(New TextBox() {hoge(0), hoge(1), hoge(2)})

どうぞよろしくお願い致します。

下記は、aryhogeにTextBoxオブジェクトを格納する処理です。

----------------------------------------
'a)
Dim hoge()() As TextBox = _
      {New TextBox() {txta01, txtb01, txtc01}, _
      New TextBox() {txta02, txtb02, txtc02}, _
      New TextBox() {txta03, txtb03, txtc03}}

Dim aryhoge As New ArrayList    'b)

aryhoge.Add(hoge(0))
aryhoge.Add(hoge(1))
aryhoge.Add(hoge(2))
----------------------------------------

(a)を(b)の初期値として...続きを読む

Aベストアンサー

Dim aryhoge As New ArrayList(hoge)

QVB.NETの配列とArrayListについて教えてください。

VB.NETで配列にPoint型のデータを入れたいのですが、
ArrayListのAddメソッドのように総数をあらかじめ指定せずに
順次追加するように登録していきたいのですが、
そのようなことは可能でしょうか?

最終的には
Dim points As Point()
g.DrawLines(Pens.Black, points)

の方法で線分を描きたいのですが、
ArrayListですとデータ型が指定できないので
Point型のデータを格納できないです。

良い方法がありましたら、ご教示頂けると助かります。

Aベストアンサー

Class Q4240323A

Shared Sub Main()

'ケース1
Dim Points1 As System.Drawing.Point()

'何故かBC42030の警告が出るorz
System.Array.Resize(Points1,2)
Points1(0).X = 100
Points1(0).Y = 100

System.Console.WriteLine(Points1.Length.ToString())

Points1(1).X = 200
Points1(1).Y = 200

System.Console.WriteLine(Points1.Length.ToString())

'http://msdn.microsoft.com/en-us/library/bb348051.aspx
'VB6をご存知ならRedim Preserveと言った方が解りやすいだろう
'VB.NETでもRedimやRedim Preserveは有効だけど,
'僕はVB6時代の構文を嫌っているから.NETらしくArray.Resizeを使っているよ。
'でも一次元配列はともかく多次元配列の配列添字については良く知らないんだ。
System.Array.Resize(Points1,1)

System.Console.WriteLine(Points1(0).X.ToString())

System.Console.WriteLine("======================================")

'.NET 2.0やJava 1.5から取り入れられた機能としてGenericsってのがある。
'System.Collections.ArrayListがSystem.Objectを基本としていたのに対し,
'.NETのSystem.Collections.Generic.List<T>は宣言時に型を記述することで
'型のキャストをいちいち行わなくていいようになっている。
'例を示そう。

Dim Points2 As System.Collections.Generic.List(Of System.Drawing.Point)
Points2 = New System.Collections.Generic.List(Of System.Drawing.Point)()

Dim Point21 As System.Drawing.Point
Dim Point22 As System.Drawing.Point

Point21.X = 100
Point21.Y = 100

Point22.X = 200
Point22.Y = 200

Points2.Add(Point21)
Points2.Add(Point22)

'ちなみに
'System.Collections.Generic.List<T>.ToArray()
'でArray<T>つまりTの配列を返すことが出来るようになっている。

Dim Bitmap1 As System.Drawing.Bitmap
Bitmap1 = New System.Drawing.Bitmap(500,500)
System.Drawing.Graphics.FromImage(Bitmap1).DrawLines(System.Drawing.Pens.Black,Points2.ToArray())

'VistaだとProgram Filesとかに書けなくてエラー出るかも。
Bitmap1.Save("Q4240323-1.bmp")

'こんな感じ。

'何故質問文でArrayListの話が出てきているのに最初に配列の話持ってきたかっつーと。
'多分Boxing関係だと思っているが,よくは理解できていないことがあって(Q3320160)
'Points2.Item(0).X = 100
'とかは出来ず,
'Dim Point23 As Point
'Points23.X = 100
'Points23.Y = 100
'Points2.Item(0) = Point23
'とかしないといけなかったので
'勧めづらかったんですよ。面白いんですけどね。・・・・A

'最後に脱線してこんなのを紹介しておきましょう。
'オブジェクト初期化子(多分.NET 3.0から)

Dim Points3 As System.Drawing.Point
Points3 = New System.Drawing.Point() With {.X = 100,.Y = 100}

System.Console.WriteLine(Points3.X.ToString())

'Aと組み合わせると色々面白いかもしれません





System.Console.ReadKey(true)

End Sub

End Class

Class Q4240323A

Shared Sub Main()

'ケース1
Dim Points1 As System.Drawing.Point()

'何故かBC42030の警告が出るorz
System.Array.Resize(Points1,2)
Points1(0).X = 100
Points1(0).Y = 100

System.Console.WriteLine(Points1.Length.ToString())

Points1(1).X = 200
Points1(1).Y = 200

System.Console.WriteLine(Points1.Length.ToString())

'http://msdn.microsoft.com/en-us/library/bb348051.aspx
'VB6をご存知ならRedim Preserveと言った方が解りやすいだろう
'VB.NETでもRe...続きを読む

QDataGridViewで指定したセルの値を取得

こんにちは。

VB2008のDataGridViewで指定したセルの値を取得をする方法がわかりません。
どなたか教えてください。

Aベストアンサー

こんばんは.

 Dim Data As String
 Data = Me.DataGridView(0, 2).Value
 MsgBox(Data)

みたいな感じで取れないですかね???

Q2次元動的配列の第一引数のみを可変にする

ReDim Preserve aStrSKU(x, 2)
aStrSKU(x, 0) = strPre
aStrSKU(x, 1) = サブ2
aStrSKU(x, 2) = サブ3

x = x + 1

上記のソースをDo Untilでまわしているのですが、
2週目以降にxに1を足して行数だけ増やしたいのですが、
2週目でエラーが発生します。
行数だけ要素数を増やす方法はありますか?

Aベストアンサー

こんな感じで

Structure column
Dim col1 As String
Dim col2 As String
Dim col3 As String
End Structure

Private Sub test()

Dim aStrSKU() As column
Dim x As Integer

Do Until x = 3
ReDim Preserve aStrSKU(x)
aStrSKU(x).col1 = "strPre"
aStrSKU(x).col2 = "サブ2"
aStrSKU(x).col3 = "サブ3"

x = x + 1
Loop

End Sub

QVB.NETのコンボボックスについて

VB6からVB.NETでプログラミングを始めました。
コンボボックスのクリアの仕方や設定の仕方、また
取り出し方等を教えて下さい。

色々とヘルプも見てみたのですが、よく解りません。
宜しくお願い致します。

Aベストアンサー

クリアだけだと思ってました。
追記します。

Itemを操作します


'登録
For i = 1 To 10
  Me.ComboBox1.Items.Add(i.ToString)
Next

'取得
For i = 0 To Me.ComboBox1.Items.Count - 1
  MsgBox(Me.ComboBox1.Items(i).ToString)
Next

'完全クリア
Me.ComboBox1.Items.Clear()

部分クリア
Me.ComboBox1.Items.RemoveAt(Index値)

QDataTableから条件を満たした行を別のDatatableへコピーしたい

VC#2005とSQLServer2005ExpressEditionでWindowsアプリケーションを作成しています。

データベースの中から1つのマスタテーブルのデータを呼び出すのにTableAdapterを使ってDataTableにデータをバインドしました。
そこから条件を満たしている行をすべて抽出して同じ型のDataTableにデータをコピーしたいのです。

ですから、DataTableは2つ用意しています。1つは上記の通りデータをバインドしていますが、もう1つは宣言しただけなのでまだ空っぽの状態です。
DataTableにはカラムが3列あり、その中の1列をグループIDとしています。
条件としてはグループIDが同じであるということです。
やりたいことは条件を満たしている行をすべて抽出して空のデータテーブルにコピーすることです。

どなたかご存知の方いらっしゃれば教えてください。
よろしくお願いします。

Aベストアンサー

C#だったんですね … さほど変わりないと思いますが

お使いのコードが提示されていないのでこちらで適当な変数をでっち上げております
現在お使いのコードを支障の無い範囲で提示しましょう

//元のデータテーブルがdtSourceとすると
// テーブル構造をコピー
DataTable dt = dtSource.Clone();
DataRow r = null;
foreach( DataRow dtRow in dtSource.Select("選択するための文字列"))
{
  r = dt.NewRow();
  for( int n = 0; n < dtRow.ItemArray.Length; n++ )
  {
    r[n] = dtRow[n];
  }
  dt.Rows.Add( r );
}
といった具合になると思います

# 前回の投稿中のstSorceはdtSourceの単なるミスです

QComboBoxの初期表示値

当方、VB.NETでwindowsMoblie5.0の開発をしております。

そこでComboBoxを使うのですが起動した際の初期表示の値を決めるにはどうすれば良いのですか?
初歩的な質問で申し訳ありませんがご教授のほどよろしくお願い申し上げます。

Aベストアンサー

> そこでComboBoxを使うのですが起動した際の初期表示の値を決める
> にはどうすれば良いのですか?
これを決めるのは『あなた』ですが ・・・

設定したItemsコレクションの中から選択したいのであれば
SelectedIndexにItemsコレクションの項目のインデックス番号を設定します

『選択してください』Itemsコレクションと無関係な文字列を表示してほしいならTextプロパティでしょう
ただしComboBoxStyleがDropDownList以外の場合に限ります

QVB.NET開発。ラジオボタンとコントロールの制御について教えてください

開発環境 : WindowsXP
      office2003
言語   : VB.NET

.NET初心者です。ご存知の方がおりましたらご教示御願いします。

今、ラジオボタンを10個と、
テキストボックスのコントロールを2個(AとB)置いた画面をつくっています。
ラジオボタンは1つしか選択できません。

分からないことは、
その内のラジオボタン5個はAのテキストボックスにのみ使用する、
残りのラジオボタン5個はBのテキストボックスにのみ使用する場合の
制御方法です。

一応、1つのラジオボタンに対して、1つのイベントを発生させるような形で制御はできているのですが、
もっと、効率的な書き方はないでしょうか。
(グループ化するとか?)


どうぞよろしくお願い致します。

Aベストアンサー

イベントハンドラは
Private Sub HandlerMethod(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ☆
上記の☆のところにイベントを捕らえるコントロール名とイベント名が入ります。

略) Handles RadioButton1.CheckedChanged, RadioButton2.CheckedChanged
のようにカンマで連結すれば、複数のコントロールをひとつのイベントハンドラで処理することができます。実際にイベントを発生させたコントロールはsenderで判別できます。

手作業でこれを追加してもできますが、フォームデザイナからであれば次の手順で行って下さい。

1. イベントハンドラをまとめるコントロールを選択
(今回の場合はラジオボタン5つ)
2. プロパティウィンドウの稲妻マークをクリック(イベント一覧に変わります)
3. CheckedChangedの欄にイベントハンドラ名(名前は任意。例:RadioChanged)を記入し、Enterキー

これで、複数選択したコントロールをひとつのイベントハンドラで受け取るコードが自動的に生成されます。

※当方VB2005環境で確認しているので、VB.NETが同じかどうかまでは不明です。

イベントハンドラは
Private Sub HandlerMethod(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ☆
上記の☆のところにイベントを捕らえるコントロール名とイベント名が入ります。

略) Handles RadioButton1.CheckedChanged, RadioButton2.CheckedChanged
のようにカンマで連結すれば、複数のコントロールをひとつのイベントハンドラで処理することができます。実際にイベントを発生させたコントロールはsenderで判別できます。

手作業でこれを追加してもできますが、フォームデザ...続きを読む

QVB.NETでラベルの大きさってどうやって変えるの?

VB.NETでラベルの大きさってどうやって変えるの?
バージョンは2008

Aベストアンサー

あれ?
普通に
Widthプロパティ
http://msdn.microsoft.com/en-us/library/system.windows.forms.control.width%28VS.100%29.aspx
やHeightプロパティを変更すればできるはずだけど、コード、IDE問わず。
http://msdn.microsoft.com/en-us/library/system.windows.forms.control.height%28VS.100%29.aspx

#まぁAutoSizeプロパティをfalseにしないと、Textプロパティに代入された文字列を格納するのに必要な最低限の大きさに自動で調整されちゃうみたいだけど。
http://msdn.microsoft.com/en-us/library/system.windows.forms.control.autosize.aspx

Qラジオボタンの初期指定

ラジオボタンを12個使用する画面を今作っているのですが、初期立ち上げ時に1番目のラジオボタンを選択した状態にするのはどうすれば良いのでしょうか?

プログラムの流れ上選んでいなくても、1番目を選んだ状態に次のウィンドウは開くのですが、聞く話で、それは不安定要素があるって聞いた物ですから。

Aベストアンサー

VB.NETだったら
デザイン時に
Checkedをtrue


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング