C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: インディテックスが配列の境界外ですの対処


(過去ログ 172 を表示中)

[トピック内 2 記事 (1 - 2 表示)]  << 0 >>

■98915 / inTopicNo.1)  インディテックスが配列の境界外ですの対処
  
□投稿者/ ゆう (1回)-(2022/01/19(Wed) 04:05:44)

分類:[.NET 全般] 

授業の課題でvisial basicを使って成績表の合計と平均を出すのですが、矢印のnextのところに「インディテックスが配列の境界外です」とでてうまくいきません
どうすればよいかわかりますか


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Const 生徒数 As Integer = 6
Const 科目数 As Integer = 3

Const 行の合計点のインデックス番号 As Integer = 4
Const 行の平均点のインデックス番号 As Integer = 5
Const 列の合計点のインデックス番号 As Integer = 7
Const 列の平均点のインデックス番号 As Integer = 8

Dim 成績(科目数, 生徒数) As Integer
Dim i, j, 行合計, 列合計 As Integer

For i = 1 To 科目数
For j = 1 To 生徒数
成績(i, j) = Val(成績表(i, j - 1).Value)
Next
Next

For i = 1 To 生徒数
行合計 = 0
For j = 1 To 科目数
行合計 = 行合計 + 成績(j, i)
Next
成績表(行の合計点のインデックス番号, i - 1).Value = 行合計
成績表(行の平均点のインデックス番号, i - 1).Value = Format(行合計 / 科目数, "0.0")
Next

For i = 1 To 生徒数
For j = 1 To 科目数
成績(i, j) = Val(成績表(i, j - 1).Value)
Next ←←←←
Next

For i = 1 To 科目数
列合計 = 0
For j = 1 To 生徒数
列合計 = 列合計 + 成績(j, i)
Next

成績表(列の合計点のインデックス番号, i - 1).Value = 列合計
成績表(列の平均点のインデックス番号, i - 1).Value = Format(列合計 / 生徒数, "0.0")
Next
End Sub
End Class
引用返信 編集キー/
■98916 / inTopicNo.2)  Re[1]: インディテックスが配列の境界外ですの対処
□投稿者/ Azulean (1221回)-(2022/01/19(Wed) 07:10:38)
2022/01/19(Wed) 07:20:24 編集(投稿者)

一連の質問は授業の課題なのかな?
授業の課題の場合は Web で質問せず、ご友人や先生に聞くことをお勧めします。

あまり掲示板頼りの結果の提出をしていると、後々問題となりますので。


No98915 (ゆう さん) に返信
> For i = 1 To 科目数
> For j = 1 To 生徒数
> 成績(i, j) = Val(成績表(i, j - 1).Value)
> Next
> Next
(略)
> For i = 1 To 生徒数
> For j = 1 To 科目数
> 成績(i, j) = Val(成績表(i, j - 1).Value)
> Next ←←←←
> Next

このコード内で、i と j のループ数(生徒数・科目数)に一貫性がないですが、そういうことでは?
ある部分では i は科目数だし、別の部分では i は生徒数になっている。


送ることができるアドバイスがあるとしたら、「デバッグしましょう」。
「インデックスが配列の境界外ですという例外が出た」ではなく、止まった位置の変数の値を確認して、何が思っていたことと違うかを確認し、そうなる理由を考えましょう。

その技を身につけなければ、今後、授業についていけませんので…。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -