Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kotlin在使用I do Any as Int时显示错误<;Int_Kotlin - Fatal编程技术网

Kotlin在使用I do Any as Int时显示错误<;Int

Kotlin在使用I do Any as Int时显示错误<;Int,kotlin,Kotlin,我想比较JSONObject的字段 以下是我正在尝试的代码: x=JSONObject() x、 put(“num”,1) if(x[“num”]作为Int

我想比较JSONObject的字段

以下是我正在尝试的代码:

x=JSONObject()
x、 put(“num”,1)
if(x[“num”]作为Int<2){
打印(“干得好!”)
}
IDE显示的错误:

Type expected
Expecting a '>
您需要将
x[“num”]作为Int
放在括号中,否则编译器会认为您试图执行
Int<2
,这实际上没有任何意义

val x = JSONObject()
x.put("num", 1)
if ((x["num"] as Int) < 2) {
    print("Good work!")
}
您需要将
x[“num”]作为Int
放在括号中,否则编译器会认为您试图执行
Int<2
,这实际上没有任何意义

val x = JSONObject()
x.put("num", 1)
if ((x["num"] as Int) < 2) {
    print("Good work!")
}

当前代码不能按原样工作,因为编译器看到
Int
正如@Alex.T所说,您可以通过在cast表达式周围放置
(..)
来消除歧义:
(x[“num”]As Int)<2

但是,如果您认为表达式在运行时会像这样失败,那么应该改用类型化getter,如:

val x=JSONObject()
x、 put(“num”,1)
if(x.getInt(“num”)<2){
打印(“干得好!”)
}
如果该值不是整数,则在运行时使用
org.json.JSONException
(如上面链接的Javadoc中所述)将失败。如果希望优雅地处理错误,可以捕获此异常


或者,您可以使用带有默认值的更安全的选项,例如,如果JSON中不存在键或该值不是数字,则该选项将默认为给定值。

当前代码不能正常工作,因为编译器看到
Int
正如@Alex.T所说,您可以通过在cast表达式周围放置
(..)
来消除歧义:
(x[“num”]As Int)<2

但是,如果您认为表达式在运行时会像这样失败,那么应该改用类型化getter,如:

val x=JSONObject()
x、 put(“num”,1)
if(x.getInt(“num”)<2){
打印(“干得好!”)
}
如果该值不是整数,则在运行时使用
org.json.JSONException
(如上面链接的Javadoc中所述)将失败。如果希望优雅地处理错误,可以捕获此异常


或者,您可以使用带有默认值的更安全的选项,例如,如果JSON中不存在键或该值不是数字,则该选项将默认为给定值。

您可以将整个代码放入吗?包括
x
的声明和
stacktrace
的完整
错误
?我编辑了OP的问题,看起来部分代码在格式化过程中丢失了issues@Joffrey谢谢你的编排你能把全部代码都放进去吗?包括
x
的声明和
stacktrace
的完整
错误
?我编辑了OP的问题,看起来部分代码在格式化过程中丢失了issues@Joffrey谢谢你的安排好的,谢谢!这起作用了。现在我需要把这个问题标记为已经解决了吗?如果你对JSON的结构有信心,你也可以使用
x.getInt(“num”)
,而不是强制转换(除非我们不是说
org.JSON.JSONObject
?)+1到@Joffrey在
.getInt()
,如果你能在答案中添加这一点,我将不胜感激,或者作为替代答案发布,因为它比双谓词if语句(带有try/catch或确定性)更好。关于将某事标记为已解决,@Alex.T不确定,完成;)好的,谢谢!这起作用了。现在我需要把这个问题标记为已经解决了吗?如果你对JSON的结构有信心,你也可以使用
x.getInt(“num”)
,而不是强制转换(除非我们不是说
org.JSON.JSONObject
?)+1到@Joffrey在
.getInt()
,如果你能在答案中添加这一点,我将不胜感激,或者作为替代答案发布,因为它比双谓词if语句(带有try/catch或确定性)更好。关于将某事标记为已解决,@Alex.T不确定,完成;)