テキストを効率的に構築する
CoddyのKotlinジャーニー「ロジックとフロー」セクションの一部。レッスン 47/63。
StringBuilderはappendの呼び出しによってテキストを蓄積し、その後toStringが最終的なStringを生成します。ループ内でラベル、数値、区切り文字を追加すれば、各ステップで不変のString全体を手動で再構築する必要はありません。区切り文字をどこに配置するかを正確に決めてください。
main内では:
val result = StringBuilder()
for (n in 1..3) {
if (n > 1) result.append("-")
result.append(n)
}
println(result.toString())区切り文字は最初の項目を除く各項目の前に追加されるため、末尾にハイフンが付きません。
テキストを段階的に追加するにはStringBuilder.appendを、最終的なStringにはtoStringを使用します。
チャレンジ
中級count: Int パラメータを使用して numberLine を完成させてください。StringBuilder を使用して、1 から count までの数値を、先頭や末尾にハイフンを付けず、単一のハイフンで区切って返してください。count は 0 以上 20 以下です。0 の場合は空の文字列を返します。
上記でより厳しい範囲が指定されていない限り、コレクションの各レベルの要素数は最大 100 個で、整数の引数および整数コレクションの値は -1000 以上 1000 以下です。解析対象として提供されるテキストには、説明されているように無効な表現や範囲外の表現が含まれる場合があります。
型 String の値を返してください。提供されている入力/出力コードは変更しないでください。スカラー引数は 1 行に 1 つずつ読み取られます。リストは要素数に続いて各要素が並ぶ形式で始まり、マップはエントリ数に続いて各キーと値が並ぶ形式で始まります。ネストされたリストでは、各行について要素数と要素の形式を繰り返します。提供されている main は、戻り値の後に改行を 1 つ付けて出力します。リストには Kotlin の標準的な角括弧形式を使用し、追加のラベルは出力しないでください。
自分で試してみよう
fun numberLine(count: Int): String {
// ここに解答を書いてください。
return ""
}
fun main() {
val count = readln().toInt()
println(numberLine(count))
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
ロジックとフローのすべてのレッスン
自分で練習してみよう: Kotlinプレイグラウンド