Java 程序在条件运行时停止

Java 程序在条件运行时停止,java,android,kotlin,Java,Android,Kotlin,特定代码 if (TextUtils.isEmpty(value)){ Toast.makeText(this, "Silahkan Isi Jumlah", Toast.LENGTH_SHORT).show() return@setOnClickListener } 将空字符串解析为整数,这就是它抛出异常的原因 以下是正确的: E/AndroidRun

特定代码

   if (TextUtils.isEmpty(value)){
                        Toast.makeText(this, "Silahkan Isi Jumlah", Toast.LENGTH_SHORT).show()
                        return@setOnClickListener
                    }

将空字符串解析为整数,这就是它抛出异常的原因

以下是正确的:

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: app.inisiator.com, PID: 4717
    java.lang.NumberFormatException: For input string: ""
        at java.lang.Integer.parseInt(Integer.java:620)
        at java.lang.Integer.parseInt(Integer.java:643)
        at app.inisiator.com.RequestPinActivity$onCreate$1.onClick(RequestPinActivity.kt:83)
        at android.view.View.performClick(View.java:6310)
        at android.view.View$PerformClick.run(View.java:24970)
        at android.os.Handler.handleCallback(Handler.java:794)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:176)
        at android.app.ActivityThread.main(ActivityThread.java:6662)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873)
这是一个错误,因为空字符串无法转换为整数:

String a = 50;
int number = Integer.parseInt(a);
在代码中:

String a = "";
int number = Integer.parseInt(a);

更改此行在解析之前检查值是否为空,然后仅在值不为空时进行解析

此问题发生的原因是您试图解析一个无法解析为整数的字符串(空字符串)

Integer.parseInt
命令移到下面检查文本是否为空

在从文本解析数字时,请记住捕获NumberFormatException

val finalValue = Integer.parseInt(value); 
if(TextUtils.isEmpty(value)){
Toast.makeText(这是“Silahkan Isi Jumlah”,Toast.LENGTH\u SHORT.show())
return@setOnClickListener
}
试一试{
val finalValue=Integer.parseInt(值)
如果(最终值<5){
总计=最终价值*3500
total=total.toString()的总数
editText2.setText(总计)
spinner.isEnabled=false
喷丝头2.isEnabled=错误
editText.isEnabled=false
editText2.isEnabled=false
} 
}捕获(例如:NumberFormatException){
//添加日志以分析“执行其他操作”的错误
}

您的代码具有以下逻辑:

if (TextUtils.isEmpty(value)){
    Toast.makeText(this, "Silahkan Isi Jumlah", Toast.LENGTH_SHORT).show()
    return@setOnClickListener
}

try {
   val finalValue = Integer.parseInt(value)
   if (finalValue < 5){
       total = finalValue * 3500
       totall = total.toString()
       editText2.setText(totall)
       spinner.isEnabled = false
       spinner2.isEnabled = false
       editText.isEnabled = false
       editText2.isEnabled = false
   } 
} catch (ex: NumberFormatException) {
    //Add log for parsing error of do something else
}

这导致出现
NumberFormatException
-

if (TextUtils.isEmpty(value)){
    ...
} else {
    val finalValue = Integer.parseInt(value)
    if (finalValue < 5){
        ...
    }
}
空字符串或无效字符串无法转换为Int

所以在将字符串解析为int之前使用if条件-

val value = editText.getText().toString()
val finalValue = Integer.parseInt(value)        //here value is "" empty 

或者使用try/catch with
NumberFormatException

如果此代码在onClickListener中,请在您的帖子中添加更多代码。您应该添加Logcat中的错误日志,以使问题更清晰。有人能告诉我是什么吗return@setOnClickListener是不是???@PembaTamang只是一个
返回
来跳过下面的命令(仅限
setOnClickListener
中的命令)
val finalValue=Integer.parseInt(value)
-因为
是空的。我仍然感到困惑,你能给我一个更具体的例子吗?首先检查字符串值是否为空,然后解析该值,即如果字符串值为空,我们无法将其解析为字符串值问题在于if,if值为空,toast不显示,程序强制关闭ddid你试试我的解决方案?
if (TextUtils.isEmpty(value)){
    ...
} else {
    val finalValue = Integer.parseInt(value)
    if (finalValue < 5){
        ...
    }
}
val value = editText.getText().toString()
val finalValue = Integer.parseInt(value)        //here value is "" empty 
if(!value.isNullOrEmpty()){
//parse here
}