我有这个数组:["cat", "dog", "lion", "tiger", "dog", "rabbit"]
如何找到第一个“狗”的位置?
如何找到最后“狗”的位置?
当我搜索不在数组中的内容时,如何抛出错误?
目前我有一个for
循环,但我很难打印出位置。
答案 0 :(得分:8)
对于在数组中找到第一个和最后次出现的问题,在Kotlin中根本不需要使用for循环,您只需使用{ {3}}和indexOf
至于抛出错误,如果lastIndexOf返回-1
,您可以抛出Exception,观察:
import java.util.Arrays
fun main(args: Array<String>) {
// Declaring array
val wordArray = arrayOf("cat", "dog", "lion", "tiger", "dog", "rabbit")
// Declaring search word
var searchWord = "dog"
// Finding position of first occurence
var firstOccurence = wordArray.indexOf(searchWord)
// Finding position of last occurence
var lastOccurence = wordArray.lastIndexOf(searchWord)
println(Arrays.toString(wordArray))
println("\"$searchWord\" first occurs at index $firstOccurence of the array")
println("\"$searchWord\" last occurs at index $lastOccurence of the array")
// Testing something that does not occur in the array
searchWord = "bear"
var index = wordArray.indexOf(searchWord)
if (index == -1) throw Exception("Error: \"$searchWord\" does not occur in the array")
}
<强>输出强>
[cat, dog, lion, tiger, dog, rabbit]
"dog" first occurs at index 1 of the array
"dog" last occurs at index 4 of the array
java.lang.Exception: Error: "bear" does not occur in the array
答案 1 :(得分:1)
@ shash678给出了一个最有用的答案,但更多可能会有用,具体取决于你问题的性质。
具体来说:您是否正在寻找所述问题的答案,或者想要学习kotlin?
我有这个阵列:[&#34; cat&#34;,&#34; dog&#34;,&#34; lion&#34;,&#34; tiger&#34;,&#34; dog& #34;,&#34;兔子&#34;]
但你特别需要一个Array
吗?在kotlin中,这种情况通常被编码为List
,所以
val wordList = listOf("cat", "dog", "lion", "tiger", "dog", "rabbit")
该列表是不可变的&#39;并且通常{K}将使用List
(或在需要时MutableList
),除非存在其他原因,例如与现有代码的兼容性或MutableList
的特定性能要求。
此外,如果您的问题更多&#34;如何使用带索引的for循环解决此问题?&#34;,那么代码如下:
val wordList = listOf("cat", "dog", "lion", "tiger", "dog", "rabbit")
fun List<String>.findWord( target:String):Pair<Int,Int>?{
var (first,last) = Pair(-1,-1)
for(idx in this.indices){
if(this[idx]==target){
last = idx
if(first ==-1) first = idx
}
}
return if(first>-1) Pair(first,last) else null
}
println("result ${wordList.findWord("dog")!!}")
根本不是解决特定问题的最佳方法,但可能对任何想知道&#34;如何在for循环中访问索引值的人有用,而不是解决这个特定问题。所以这是kotlin编码的一个例子,而不是这个问题的推荐解决方案。
问题的最后一部分是&#34;当我搜索不在数组中的内容时,我如何抛出错误?&#34;。
kotlin&#39;成语&#39;是在失败时返回null并使用null安全性来处理错误。如果返回null,此代码只会引发异常。这不是很多信息,但如果声明从?: throw MyException("Oops")
继承的!!
类,则使用MyException
代替Execption
将允许自定义异常。
答案 2 :(得分:0)
您可以使用方法 lastIndexOf 来获取最后一次出现的值&amp;从b获取第一次出现值的 indexOf 是代码。
fun main(args: Array<String>) {
// Declaring array
val arr = arrayOf("cat", "dog", "lion", "tiger", "dog", "rabbit")
// for getting the last position of item
println(arr.lastIndexOf("dog"))
// for getting the first index of item
println(arr.indexOf("dog"))
}