質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
標準入力

標準入力(stdin)は、プログラムが標準的に用いるデータ入力元。リダイレクトしない限り、プログラムを起動した端末のキーボードが標準入力になります。UNIX系OSやC言語に実装されて普及した概念ですが、他のOSや言語も含めた総称としても使われます。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

1回答

1743閲覧

Kotlinの配列にてエラーが出る

退会済みユーザー

退会済みユーザー

総合スコア0

標準入力

標準入力(stdin)は、プログラムが標準的に用いるデータ入力元。リダイレクトしない限り、プログラムを起動した端末のキーボードが標準入力になります。UNIX系OSやC言語に実装されて普及した概念ですが、他のOSや言語も含めた総称としても使われます。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2021/07/01 15:19

編集2021/07/01 15:24

###要件・条件

毎年 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レベルアップ問題集については
「なお、このコーナー内の問題については、ユーザー同士で解答を教え合ったり、コードを公開したりするのは自由としています。」
となっているため、問題ないと判断しております。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Kotlinのインデックスは 0 から始まるので

Kotlin

1for(i in 0..input-1){

readLine() は1行読み込むので

Kotlin

1var line=readLine()!!.split(" ") 2name[i] = line[0] 3age[i] = line[1].toInt()

投稿2021/07/01 15:55

modieu

総合スコア282

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/07/01 16:07

readLineとfor文の理解が足りていませんでした。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問