2次元配列や1次元配列を使って以下のプログラムを作りたいのですがコンパイルエラーがでます。 国語 数学 英語 社会 理科 | 平均点 青木 50 90 76 | 72 木村 80 46 84 67 | 69 山田 30 69 72 89 56 | 63 名前はStringクラスの1次元配列をつかい科目名を格納するStringクラスの1次元配列をつかい点数はint型の2次元配列を使います。 プログラム仕様は以下のとおりです。 mainメソッドの処理 ①点数格納用のimt型の2次元配列を宣言し、初期化します。 ②名前格納用のString型の1次元配列を宣言し、名前で初期化します。 ③科目格納用のString型の1次元配列を宣言し、科目名で初期化します。 ④科目名を画面に表示します。 ⑤2次元配列の行数分だけ、以下の処理をします。 (1)名前を画面に表示する。(②で作成した配列を使用する。) (2)個人の合計格納用、個人の科目数を格納するint型を宣言し、初期化する。 (3)科目の数分だけ、以下の処理をする。 1.点数がある場合(列がある場合)はその点数を画面に表示し、合計に加算し、科目数 をカウントアップします。 2.点数がない場合「 」(スペース)を入力する。 3.平均を計算し、画面に出力します。
class Test1{
public static void main(String[] args){
int seiseki[][] = {{50,90,76},{80,46,84,67},{30,69,72,89,56}};
String[] name = {" 青木 "," 数学 "," 山田 "};
String[] subject = {" 国語 "," 数学 "," 英語 "," 社会 "," 理科 "};
int sum = 0;
int count = 0;
int ten;
for(int i=0; i<subject.length;i++){ System.out.print(subject[i]); } System.out.println(); for(int i =0;i<name.length;i++){ System.out.print(name[i]+" "); for(int j=0;j<subject.length;j++){ System.out.print(seiseki[i][j]+"\t"); if(j<seiseki[i].length){ System.out.print(seiseki[i][j]+"\t"); sum+=seiseki[i][j]; count++; }else{ System.out.print("\t"); } } } System.out.print("|"+sum/count); sum = 0; count = 0; }
}
###発生している問題・エラーメッセージ 国語 数学 英語 社会 理科 青木 50 50 90 90 76 76 Exception in thread "main" java.lang.ArrayIndexOutOfBoundsExcept ion: 3 一応コンパイルは成功するのですが、このような結果になります。
回答2件
あなたの回答
tips
プレビュー