Line 5: Char 28: error: unresolved reference: pow while(x.toDouble().pow(i)<bound){ ^ Line 7: Char 32: error: unresolved reference: pow while(x.toDouble().pow(i)+y.toDouble().pow(j)<=bound){ ^ Line 7: Char 52: error: unresolved reference: pow while(x.toDouble().pow(i)+y.toDouble().pow(j)<=bound){ ^ Line 8: Char 39: error: unresolved reference: pow set.add((x.toDouble().pow(i)+y.toDouble().pow(j)).toInt()) ^ Line 8: Char 59: error: unresolved reference: pow set.add((x.toDouble().pow(i)+y.toDouble().pow(j)).toInt())
时间: 2024-02-14 09:03:27 浏览: 20
抱歉,我的代码中使用了 Kotlin 的扩展函数 Math.pow(),但是在 Kotlin 中没有这个函数,需要使用 Kotlin 标准库中的 kotlin.math 库的函数。您可以将代码修改为:
```kotlin
import kotlin.math.pow
fun powerfulIntegers(x: Int, y: Int, bound: Int): List<Int> {
val set = mutableSetOf<Int>()
var i = 0
while (x.toDouble().pow(i) < bound) {
var j = 0
while (x.toDouble().pow(i) + y.toDouble().pow(j) <= bound) {
set.add((x.toDouble().pow(i) + y.toDouble().pow(j)).toInt())
if (y == 1) break
j++
}
if (x == 1) break
i++
}
return set.toList()
}
```
这样就可以正确地使用 pow() 函数了。
相关问题
上述代码存在这个问题:Line 4: Char 22: error: unresolved reference: maxByOrNull val m = nums.maxByOrNull { it.size }?.size ?: 0 ^ Line 4: Char 36: error: unresolved reference: it val m = nums.maxByOrNull { it.size }?.size ?: 0 ^
这个问题是由于 `maxByOrNull` 函数在 Kotlin 1.3 版本之前不存在所导致的。
你可以将代码中的 `maxByOrNull` 函数替换成 `maxBy` 函数,并且在后面添加 `?.size`,这样就可以解决问题了。修改后的代码如下:
```kotlin
fun findDiagonalOrder(nums: List<List<Int>>): IntArray {
val n = nums.size
val m = nums.maxBy { it.size }?.size ?: 0
val res = IntArray(n * m)
var k = 0
for (i in 0 until n + m - 1) {
for (j in 0..i) {
val x = j
val y = i - j
if (x >= n || y >= m) continue
res[k++] = nums[x][y]
}
if (i % 2 == 0) {
var l = k - 1
for (j in k - i - 1 until k / 2) {
res[j] = res[l].also { res[l--] = res[j] }
}
}
}
return res
}
```
这里的修改只是将 `maxByOrNull` 替换为 `maxBy` 并添加 `?.size`,其他部分的代码都没有变化。
Line 9: Char 45: error: unresolved reference: isLetterOrDight while(left < right && !s[right].isLetterOrDight()){
抱歉,这是我的笔误,正确的方法是 `isLetterOrDigit`,你可以将第 9 行和第 12 行的 `isLetterOrDight` 改为 `isLetterOrDigit`,代码就可以正常运行了。感谢你的指正。
正确的代码如下所示:
```kotlin
fun isPalindrome(s: String): Boolean {
var left = 0
var right = s.length - 1
while (left < right) {
while (left < right && !s[left].isLetterOrDigit()) {
left++
}
while (left < right && !s[right].isLetterOrDigit()) {
right--
}
if (s[left].toLowerCase() != s[right].toLowerCase()) {
return false
}
left++
right--
}
return true
}
```