如果 - 语句错误

时间:2018-03-13 16:05:49

标签: java android if-statement

[求助]我现在要删除这个帖子吗? [解决方案]使输入更舒适我告诉程序input.setText("")。这显然导致了错误。谢谢你们所有人:)。

我是android和java的新手,我的if语句出了问题。每次“MainActivity.help等于1,程序崩溃,我不知道如何解决这个问题。如果有人可以检查下面的代码,那真的很酷:

if (MainActivity.help == 1) {

  int x = randomnumber;
  int y = Integer.parseInt(input.getText().toString());

  int diffrence = Math.abs(x - y);
  if (diffrence < 3) {
  imageb.setImageResource(R.drawable.green);
}

MainActivity.help是一个公共静态int
randomnumber也是一个整数 输入是一个editText

感谢您的帮助,抱歉我的英语不好 添

这是我收到的信息:

D/AndroidRuntime: Shutting down VM
E/AndroidRuntime: FATAL EXCEPTION: main
                  Process: com.example.tim.greroderkleiner, PID: 4487
                  java.lang.IllegalStateException: Could not execute method for android:onClick
                      at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:293)
                      at android.view.View.performClick(View.java:5198)
                      at android.view.View$PerformClick.run(View.java:21147)
                      at android.os.Handler.handleCallback(Handler.java:739)
                      at android.os.Handler.dispatchMessage(Handler.java:95)
                      at android.os.Looper.loop(Looper.java:148)
                      at android.app.ActivityThread.main(ActivityThread.java:5417)
                      at java.lang.reflect.Method.invoke(Native Method)
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
                   Caused by: java.lang.reflect.InvocationTargetException
                      at java.lang.reflect.Method.invoke(Native Method)
                      at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)
                      at android.view.View.performClick(View.java:5198) 
                      at android.view.View$PerformClick.run(View.java:21147) 
                      at android.os.Handler.handleCallback(Handler.java:739) 
                      at android.os.Handler.dispatchMessage(Handler.java:95) 
                      at android.os.Looper.loop(Looper.java:148) 
                      at android.app.ActivityThread.main(ActivityThread.java:5417) 
                      at java.lang.reflect.Method.invoke(Native Method) 
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
                   Caused by: java.lang.NumberFormatException: Invalid int: ""
                      at java.lang.Integer.invalidInt(Integer.java:138)
                      at java.lang.Integer.parseInt(Integer.java:358)
                      at java.lang.Integer.parseInt(Integer.java:334)
                      at com.example.tim.greroderkleiner.MainActivity.confirm(MainActivity.java:228)
                      at java.lang.reflect.Method.invoke(Native Method) 
                      at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288) 
                      at android.view.View.performClick(View.java:5198) 
                      at android.view.View$PerformClick.run(View.java:21147) 
                      at android.os.Handler.handleCallback(Handler.java:739) 
                      at android.os.Handler.dispatchMessage(Handler.java:95) 
                      at android.os.Looper.loop(Looper.java:148) 
                      at android.app.ActivityThread.main(ActivityThread.java:5417) 
                      at java.lang.reflect.Method.invoke(Native Method) 
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
这是对任何人说的吗? :)

3 个答案:

答案 0 :(得分:0)

在不知道错误的情况下,我打赌你在NullPointerException调用时遇到了Integer.parseInt()。您应该检查您的输入,以确保您没有尝试在.toString()上致电null

编辑:感谢您发布输出。问题很明显:

Caused by: java.lang.NumberFormatException: Invalid int: ""
                  at java.lang.Integer.invalidInt(Integer.java:138)
                  at java.lang.Integer.parseInt(Integer.java:358)

这意味着您正在尝试将""转换为整数,这将引发错误。您需要检查输入文本是否为空字符串以及无效:

String inputText = input.getText();
if (inputText != null && inputText != "") { 
    int y = Integer.parseInt(inputText.toString()); //probably don't need the toString()
    /* rest of your code */
} else { 
    /* inputText is null */
}

答案 1 :(得分:0)

var sd= $(this).text();

答案 2 :(得分:0)

你没有在文本框中输入任何文本,并尝试将空字符串解析为int,这会导致错误。

  int y = Integer.parseInt(input.getText().toString());

尝试检查输入是否为空,并在解析为int之前检查输入的字符串是否为全部数字。

String x=input.getText().toString()
if(!x.equals("") && TextUtils.isDigitsOnly(x))
   int y = Integer.parseInt(input.getText().toString());