如何将2相乘到IntOrNull()(Kotlin)

ehxuflar  于 2023-02-24  发布在  Kotlin
关注(0)|答案(3)|浏览(160)

val hasil = binding.jumlah.text.toString().toIntOrNull() * binding.harga.text.toString().toIntOrNull()
我尝试在Android Studio中使用Kotlin创建一个简单的应用程序。我尝试将2相乘到IntOrNull(),但得到2个错误
1.运算符调用对应于点限定的调用"binding. jumlah. text. toString(). toIntOrNull(). times(binding. harga. text. toString(). toIntOrNull())",在可为空的接收器"binding. jumlah. text. toString(). toIntOrNull()"上不允许此调用。
1.类型不匹配:推断类型为Int?,但应为Int
一开始我用
val hasil = binding.sum.text.toString().toInt() * binding.price.text.toString().toInt()
用这个可以完成乘法,但是当我不输入editText时,应用程序崩溃了。
那么,如何将2乘以IntOrNull()呢?

n3schb8v

n3schb8v1#

试试这个

fun Int?.orDefault(): Int {
return this ?: 0
}

用途

val hasil = binding.jumlah.text.toString().toIntOrNull().orDefault() * 
binding.harga.text.toString().toIntOrNull().orDefault()
xdyibdwo

xdyibdwo2#

您最初使用的代码是完美的val hasil = binding.sum.text.toString().toInt() * binding.price.text.toString().toInt(),但在此代码执行之前,您应该进行一些验证,以检查输入是否为空,如果输入由用户提供,则这些输入是否为数字,以便您的应用程序不会崩溃

val input = binding.jumlah.text.toString().trim()

if(input.isEmptyOrNull()){
    showMessage("Please enter number")
}else if(input.isDigitsOnly().not()){
   showMessage("Please enter number")
}else{
   val hasil = binding.sum.text.toString().toInt() *   binding.price.text.toString().toInt()
}
pbgvytdp

pbgvytdp3#

尝试使用添加此函数

fun String.toIntOrZero() = toIntOrNull() ?: 0

然后像这样使用它

val hasil = binding.jumlah.text.toString().toIntOrZero() * binding.harga.text.toString().toIntOrZero()

相关问题