プロが教える店舗&オフィスのセキュリティ対策術

javaの勉強をしていて、わからない箇所があるので教えてください。

【質問】
下記の入力例のように、標準入力される値を受け取ろうとしたのですが、
一度、strArrayに行ごと半角スペース区切りで(例:s 70 78 82 57 74)格納し、
それぞれの値を
type = strArray[0]
english =Integer.parseInt(strArray[1])
・・
と受け取ろうとしたのですが、
strArray[1]を受け取ろうとすると、
「Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1」
のエラーが発生してしまいます。


存在しない値を受け取ろうとした際に発生するということはわかったのですが、
strArray[1]には、上記の例でいうと、
「70」が入っていると思っているのですが、誤りでしょうか?

なぜ、エラーが発生するのかが見当つきません。
ぜひ、下記のコードを見て、おかしな点がありましたら、
ご教授ください。

【参考】
■入力される値
N
t_1 e_1 m_1 s_1 j_1 g_1
t_2 e_2 m_2 s_2 j_2 g_2
...
t_N e_N m_N s_N j_N g_N
・1 行目には受験者の人数を表す整数 N が与えられます。
・続く N 行のうち i 行目 (1 ≦ i ≦ N) には受験者の文理の区分を表す文字 t_i と、英語、数学、理科、国語、地理歴史の点数を表す整数 e_i, m_i, s_i, j_i, g_i がこの順に半角スペース区切りで与えられます。
・t_i について文系は "l" ("L" の小文字)、理系は "s" で表されます。
・入力は合計で N + 1 行となり、入力値最終行の末尾に改行が1つ入ります。

■入力例
5
s 70 78 82 57 74
l 68 81 81 60 78
s 63 76 55 80 75
s 90 100 96 10 10
l 88 78 81 97 93

■回答
public class Main {
public static void main(String[] args) {

Scanner sc = new Scanner(System.in);
// 受検者人数Nを受け取る
int number = sc.nextInt();

for(int i = 0; i<=number;i++){
String[] strArray = sc.nextLine().split(" ");
type = strArray[0]
english =Integer.parseInt(strArray[1])

}
}
}

A 回答 (1件)

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

ありがとうございます。
謎が解けました

お礼日時:2019/01/26 09:31

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