###要件・条件
毎年 5 月 1 日に、自分が運営している会社の社員一覧表を作成しています。表は年度ごとに更新され、社員の名前と年齢が載っています。 ところで、会社のメンバーは昨年度から全く変わらず、社員の誕生日は全員 7 月 7 日だったので、前年度の一覧表の年齢欄をそれぞれ +1 するだけで今年度の表が作れることにパイザ君は気づきました。 昨年度の一覧表が与えられるので、今年度の一覧表を出力してください。 入力される値 入力は以下のフォーマットで与えられます。 N s_1 a_1 ... s_N a_N 1 行目には社員の数を表す整数 N が与えられ、2 行目 〜 (N + 1) 行目の各行では、社員の名前を表す文字列 s_i とその社員の昨年度の年齢を表す整数 a_i が半角スペース区切りで与えられます(1 ≤ i ≤ N)。 入力値最終行の末尾に改行が1つ入ります。 文字列は標準入力から渡されます。 標準入力からの値取得方法はこちらをご確認ください 期待する出力 入力された通りの順番で、社員 s_i の名前と、その社員の今年度の年齢を半角スペース区切りでN行出力してください。 s_1 (a_1 + 1) ... s_N (a_N + 1) 末尾に改行を入れ、余計な文字、空行を含んではいけません。
発生している問題・エラーメッセージ
長さが範囲外と出ていますが、そもそも配列の長さは標準入力を参照して作っているので、そんなことは起こらないと思っていますが、何が原因でこのようになっているか分かりません。 Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1 at MainKt.main(Main.kt:10)
該当のソースコード
Kotlin
1fun main(args: Array<String>) { 2 3 val input : Int = readLine()!!.toInt() 4 var name = arrayOfNulls<String>(input) 5 var age = IntArray(input) 6 for(i in 1..input){ 7 name[i] = readLine() 8 age[i] = readLine()!!.toInt() 9 } 10 for(j in name.indices){ 11 println(name[j] + " " + (age[j]?.plus(1))); 12 } 13}
補足情報(FW/ツールのバージョンなど)
Paizaラーニング 標準入出力 (paizaランク C 相当)の問題集からです。
シェアURL
https://paiza.jp/works/mondai/c_rank_level_up_problems/c_rank_std_in_out_boss
Paizaレベルアップ問題集については
「なお、このコーナー内の問題については、ユーザー同士で解答を教え合ったり、コードを公開したりするのは自由としています。」
となっているため、問題ないと判断しております。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2021/07/01 16:07