如何从多行中读取字符串并分别打印出来?
how can i read strings from multiple lines and print them out respectively?
class MusicPlayer {
private var songs: Array<String> = arrayOf("")
var index = songs.size
fun add(track: String) {
songs[index-1] = track
}
fun show() {
for (item in songs) {
println(item)
}
}
}
fun main(args: Array<String>) {
val m = MusicPlayer()
while(true) {
var input = readLine()!!
if(input == "stop") {
break
}
m.add(input)
}
m.show()
}
我的输入是
>Purple Haze
>Under Pressure
>Walk This Way
>stop
预期输出
>Purple Haze
>Under Pressure
>Walk This Way
>Playing Purple Haze
但我得到的是
线程“main”中的异常java.lang.ArrayIndexOutOfBoundsException:索引 -1 超出长度 0 的范围
如果您使用可变列表,则不需要索引变量。使用可变列表比使用数组容易得多。
class MusicPlayer {
private val songs = mutableListOf<String>()
fun add(track: String) {
songs.add(track)
}
fun show() {
for (item in songs) {
println(item)
}
}
}
在 MusicPlayer class 中添加功能没有任何意义。首先,想象一下前三个迭代。我们调用 add 方法 3 次,如下所示:
m.add("song1")
m.add("song2")
m.add("song3")
在 MusicPlayer 中它看起来像这样:
(您没有在任何地方修改“索引”变量,所以...)
// index = 1
// songs[index - 1] = songs[1 - 1] = songs[0]
//first add
songs[0] = "song1"
//second add
songs[0] = "song2"
//third add
songs[0] = "song3"
其次,数组的大小不是动态的。如果你声明一个 size = 1 的数组,它的大小将永远是 1。你不能那样做
private var songs: Array<Stirng> = arrayOf("")
songs[2] = "exampleText" //ArrayIndexOutOfBoundsException
数组仅保留 1 个元素的内存。有多种方法可以处理它,但在您的示例中,我建议您使用 ArraysList 或 MutableList(几乎相同)。这样的合集可以让你自由修改它的size/length.
带有 ArrayList 的 MusicPlayer 看起来像这样
private var songs: ArrayList<String> = ArrayList()
fun add(track: String) {
songs.add(track)
}
fun show() {
for (item in songs) {
println(item)
}
}
class MusicPlayer {
private var songs: Array<String> = arrayOf("")
var index = songs.size
fun add(track: String) {
songs[index-1] = track
}
fun show() {
for (item in songs) {
println(item)
}
}
}
fun main(args: Array<String>) {
val m = MusicPlayer()
while(true) {
var input = readLine()!!
if(input == "stop") {
break
}
m.add(input)
}
m.show()
}
我的输入是
>Purple Haze
>Under Pressure
>Walk This Way
>stop
预期输出
>Purple Haze
>Under Pressure
>Walk This Way
>Playing Purple Haze
但我得到的是
线程“main”中的异常java.lang.ArrayIndexOutOfBoundsException:索引 -1 超出长度 0 的范围
如果您使用可变列表,则不需要索引变量。使用可变列表比使用数组容易得多。
class MusicPlayer {
private val songs = mutableListOf<String>()
fun add(track: String) {
songs.add(track)
}
fun show() {
for (item in songs) {
println(item)
}
}
}
在 MusicPlayer class 中添加功能没有任何意义。首先,想象一下前三个迭代。我们调用 add 方法 3 次,如下所示:
m.add("song1")
m.add("song2")
m.add("song3")
在 MusicPlayer 中它看起来像这样: (您没有在任何地方修改“索引”变量,所以...)
// index = 1
// songs[index - 1] = songs[1 - 1] = songs[0]
//first add
songs[0] = "song1"
//second add
songs[0] = "song2"
//third add
songs[0] = "song3"
其次,数组的大小不是动态的。如果你声明一个 size = 1 的数组,它的大小将永远是 1。你不能那样做
private var songs: Array<Stirng> = arrayOf("")
songs[2] = "exampleText" //ArrayIndexOutOfBoundsException
数组仅保留 1 个元素的内存。有多种方法可以处理它,但在您的示例中,我建议您使用 ArraysList 或 MutableList(几乎相同)。这样的合集可以让你自由修改它的size/length.
带有 ArrayList 的 MusicPlayer 看起来像这样
private var songs: ArrayList<String> = ArrayList()
fun add(track: String) {
songs.add(track)
}
fun show() {
for (item in songs) {
println(item)
}
}