Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.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
Android 解析整数是行不通的_Android - Fatal编程技术网

Android 解析整数是行不通的

Android 解析整数是行不通的,android,Android,有人能查一下我的密码吗?我正在使用TextView和EditText计算分数,我还为变量声明了整数,但当我运行代码时,解析整数时会出现错误。提前谢谢。还可以查看我的日志猫以了解更多信息。这是我的密码: initControls(); } private void initControls() { amount1=(EditText)findViewById(R.id.amount1); amount2=(EditTex

有人能查一下我的密码吗?我正在使用
TextView
EditText
计算分数,我还为变量声明了整数,但当我运行代码时,解析整数时会出现错误。提前谢谢。还可以查看我的日志猫以了解更多信息。这是我的密码:

 initControls();
      }
      private void initControls()
      {
          amount1=(EditText)findViewById(R.id.amount1);
          amount2=(EditText)findViewById(R.id.amount2);
          amount3=(EditText)findViewById(R.id.amount3);
          result=(TextView)findViewById(R.id.result);
          calculate=(Button)findViewById(R.id.finish);
          calculate.setOnClickListener(new Button.OnClickListener()
          {public void onClick
          (View  v) { calculate();}});
      }
      private void calculate()
      {

          if(amount1.getText().toString().equals(null))
          {
          x=0;
          }
          else
              amount1.getText().toString();
              x=Integer.parseInt(amount1.getText().toString());

      if(amount2.getText().toString().equals(null)) {
          y=0; 
      }
      else
          amount2.getText().toString();
          y=Integer.parseInt(amount2.getText().toString());

     if(amount3.getText().toString().equals(null)) {
          v=0;
      }
     else
    amount3.getText().toString();
      v=Integer.parseInt(amount3.getText().toString());
      {
          z=x+y+v;
          result.setText(Integer.toString(z));
      }
这是我的原木猫:

08-16 16:15:51.794: W/dalvikvm(224): threadid=3: thread exiting with uncaught exception (group=0x4001b188)
08-16 16:15:51.794: E/AndroidRuntime(224): Uncaught handler: thread main exiting due to uncaught exception
08-16 16:15:51.824: E/AndroidRuntime(224): java.lang.NumberFormatException: unable to parse '' as integer
08-16 16:15:51.824: E/AndroidRuntime(224):  at java.lang.Integer.parseInt(Integer.java:353)
08-16 16:15:51.824: E/AndroidRuntime(224):  at java.lang.Integer.parseInt(Integer.java:323)
08-16 16:15:51.824: E/AndroidRuntime(224):  at drj.thesis.tridi.Maingame.calculate(Maingame.java:70)
08-16 16:15:51.824: E/AndroidRuntime(224):  at drj.thesis.tridi.Maingame.access$0(Maingame.java:54)
08-16 16:15:51.824: E/AndroidRuntime(224):  at drj.thesis.tridi.Maingame$1.onClick(Maingame.java:52)
08-16 16:15:51.824: E/AndroidRuntime(224):  at android.view.View.performClick(View.java:2364)
08-16 16:15:51.824: E/AndroidRuntime(224):  at android.view.View.onTouchEvent(View.java:4179)
08-16 16:15:51.824: E/AndroidRuntime(224):  at android.widget.TextView.onTouchEvent(TextView.java:6541)
08-16 16:15:51.824: E/AndroidRuntime(224):  at android.view.View.dispatchTouchEvent(View.java:3709)
08-16 16:15:51.824: E/AndroidRuntime(224):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
08-16 16:15:51.824: E/AndroidRuntime(224):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
08-16 16:15:51.824: E/AndroidRuntime(224):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
08-16 16:15:51.824: E/AndroidRuntime(224):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
08-16 16:15:51.824: E/AndroidRuntime(224):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
08-16 16:15:51.824: E/AndroidRuntime(224):  at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1659)
08-16 16:15:51.824: E/AndroidRuntime(224):  at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1107)
08-16 16:15:51.824: E/AndroidRuntime(224):  at android.app.Activity.dispatchTouchEvent(Activity.java:2061)
08-16 16:15:51.824: E/AndroidRuntime(224):  at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1643)
08-16 16:15:51.824: E/AndroidRuntime(224):  at android.view.ViewRoot.handleMessage(ViewRoot.java:1691)
08-16 16:15:51.824: E/AndroidRuntime(224):  at android.os.Handler.dispatchMessage(Handler.java:99)
08-16 16:15:51.824: E/AndroidRuntime(224):  at android.os.Looper.loop(Looper.java:123)
08-16 16:15:51.824: E/AndroidRuntime(224):  at android.app.ActivityThread.main(ActivityThread.java:4363)
08-16 16:15:51.824: E/AndroidRuntime(224):  at java.lang.reflect.Method.invokeNative(Native Method)
08-16 16:15:51.824: E/AndroidRuntime(224):  at java.lang.reflect.Method.invoke(Method.java:521)
08-16 16:15:51.824: E/AndroidRuntime(224):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
08-16 16:15:51.824: E/AndroidRuntime(224):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
08-16 16:15:51.824: E/AndroidRuntime(224):  at dalvik.system.NativeStart.main(Native Method)
08-16 16:15:51.857: I/dalvikvm(224): threadid=7: reacting to signal 3
08-16 16:15:51.864: E/dalvikvm(224): Unable to open stack trace file '/data/anr/traces.txt': Permission denied

问题相当清楚:

java.lang.NumberFormatException: unable to parse '' as integer
您正在尝试分析一个空字符串。您需要弄清楚为什么要解析空字符串

我怀疑这是其中很大一部分:

 if(amount1.getText().toString().equals(null))
 {
    x=0;
 }
 else
    amount1.getText().toString();
    x=Integer.parseInt(amount1.getText().toString());
else
块周围应该有大括号,以便两条语句都在其中:

 if(amount1.getText().toString().equals(null))
 {
    x=0;
 }
 else
 {
    amount1.getText().toString();
    x=Integer.parseInt(amount1.getText().toString());
 }
。。。尽管
else
块中的第一条语句对我来说毫无意义

实际上,我希望
amount1.getText()
已经返回了一个字符串,这使得调用
toString()
变得不必要(也许不是;这可能是我不知道的Android方面),但我从来没有期望结果等于null。也许你是想和“”这样比较:

 if(amount1.getText().toString().equals(""))
 {
    x=0;
 }
 else
 {
    // Removed pointless call to amount1.getText().toString()
    x=Integer.parseInt(amount1.getText().toString());
 }
(您也可以使用
amount1.getText().toString().getLength()==0
来检查空字符串。选择哪个字符串取决于您的偏好。)

下面也有同样的问题,建议您可能应该提取一个方法来执行此条件解析


此外,您应该真正修复缩进。正确地缩进代码会对代码的可读性产生巨大的影响。

问题相当清楚:

java.lang.NumberFormatException: unable to parse '' as integer
您正在尝试分析一个空字符串。您需要弄清楚为什么要解析空字符串

我怀疑这是其中很大一部分:

 if(amount1.getText().toString().equals(null))
 {
    x=0;
 }
 else
    amount1.getText().toString();
    x=Integer.parseInt(amount1.getText().toString());
else
块周围应该有大括号,以便两条语句都在其中:

 if(amount1.getText().toString().equals(null))
 {
    x=0;
 }
 else
 {
    amount1.getText().toString();
    x=Integer.parseInt(amount1.getText().toString());
 }
。。。尽管
else
块中的第一条语句对我来说毫无意义

实际上,我希望
amount1.getText()
已经返回了一个字符串,这使得调用
toString()
变得不必要(也许不是;这可能是我不知道的Android方面),但我从来没有期望结果等于null。也许你是想和“”这样比较:

 if(amount1.getText().toString().equals(""))
 {
    x=0;
 }
 else
 {
    // Removed pointless call to amount1.getText().toString()
    x=Integer.parseInt(amount1.getText().toString());
 }
(您也可以使用
amount1.getText().toString().getLength()==0
来检查空字符串。选择哪个字符串取决于您的偏好。)

下面也有同样的问题,建议您可能应该提取一个方法来执行此条件解析


此外,您应该真正修复缩进。正确地缩进代码会对代码的可读性产生巨大的影响。

首先,您应该使用字符串长度函数检查空字符串

喜欢
if(amount1.getText().toString().length==0)

第二件事,您需要在else循环中放入
{}
括号

例子
您的代码试图解析无法解析的
空文本(“”)
。请在else部分中使用括号
{}
编写解析代码。

首先,您应该使用字符串长度函数检查空字符串

喜欢
if(amount1.getText().toString().length==0)

第二件事,您需要在else循环中放入
{}
括号

例子
您的代码试图解析无法解析的
空文本(“”)
。请在其他部分用括号写解析代码。

请记住,空文本(“”)不能解析为数字/整数。

请记住,空文本(“”)不能解析为数字/整数。

谢谢你的回答,它真的帮助了我,很抱歉,因为我是android新手。谢谢你的回答,它真的帮助了我,我很抱歉,因为我是新来安卓的。