在Kotlin中是否可以将Array<Int>
转换为Int?我搞砸了2D数组,并试图打印索引彼此相等的元素。这是我尝试完成此操作的循环:
for (rows in arr) {
for (elements in rows) {
--------> if (rows == elements) {
print(elements)
}
}
print("\n")
}
rows
的类型为Array<Int>
,而elements
的类型为Int
。我已经尝试过使用StringBuilder方法,但无法正常工作。是否有允许使用此功能的函数或其他方法?感谢我提供进一步研究的任何提示。
答案 0 :(得分:1)
这是foreach
的一种方法。关键是您可以按索引进行迭代,也可以通过将现有值与索引进行映射来进行迭代。
三种解决方法:
任何样式的编程语言:
for(rowIndex in 0 until arr.size) {
for(colIndex in 0 until arr[rowIndex].size) {
if(colIndex == rowIndex) {
println("[$rowIndex, $colIndex]: ${arr[rowIndex][colIndex]}")
}
}
}
Python样式:(并使用解构语法)
for ((rowIndex, row) in arr.withIndex()) {
for ((colIndex, value) in row.withIndex()) {
if(colIndex == rowIndex) {
println("[$rowIndex, $colIndex]: $value")
}
}
}
与以前相同,但使用的是lambda:
arr.withIndex().forEach {
(rowIndex, row) ->
row.withIndex().forEach { (colIndex, value) ->
if(colIndex == rowIndex) {
println("[$rowIndex, $colIndex]: $value")
}
}
}
答案 1 :(得分:0)
我可能会做这样的事情:
arr.indices.forEach { i ->
arr[i].indices.forEach { j ->
if (i == j) println("arr[$i][$j]==${arr[i][j]}")
}
}
indices
扩展名只是其中一种,但是由于您对它们最感兴趣,所以我认为这是一个很好的解决方案。
答案 2 :(得分:0)
如果您想要的数组中只有一个元素,并且知道它的索引,则绝对没有理由遍历该数组。所以我建议
for (i in arr.indices) {
if (i < arr[i].size) {
println("arr[$i][$i]==${arr[i][i]}")
}
}
答案 3 :(得分:0)
您可以看到以下功能
fun printDiagonalElements(){
val row1 = intArrayOf(1,2,3)
val row2 = intArrayOf(4,5,6)
val row3 = intArrayOf(7,8,9)
val row4 = intArrayOf(10,5,6,16)
val array : Array<IntArray> = arrayOf(row1,row2,row3,row4)
for(i in 0 .. array.size-1){
val row = array[i]
for (j in 0 .. row.size-1){
if(i == j){
println(array[i][j])
}
}
}
}
答案 4 :(得分:0)
我不确定为什么如果只需要一个值,这里提出的每个解决方案为什么都会迭代元素内部数组。
这是一种通过 one 循环在正方形2D数组的主对角线中打印数字的方法:
brotli
但是请注意,如果该数组中的行数多于列数,即数组不为正方形,则会抛出该错误。您可以添加检查以确保每个行数组中都有一个包含行索引的列:
arr.forEachIndexed { index, row ->
println("value at [$index, $index]: ${row[index]}")
}