java.lang.NumberFormatException:无效整数:“”

java.lang.NumberFormatException: Invalid int: “”

我得到 java.lang.NumberFormatException: Invalid int: error

我认为声明是恰当的

  1. 我之前已经在字符串中输入了数字。
  2. 以下部分只计算总和。
  3. 第二部分是第一部分的延续。

声明如下:

protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    final EditText num1 = (EditText)findViewById(R.id.num1);
    final EditText num2 = (EditText)findViewById(R.id.num2);
    final EditText resu = (EditText)findViewById(R.id.resu);
    resu.setFocusableInTouchMode(false);
    resu.setFocusable(false);
    resu.setClickable(false);
    final Button plus = (Button)findViewById(R.id.plus);


    final String n1 = num1.getText().toString();

    final String n2 = num2.getText().toString();

点击程序:

plus.setOnClickListener(
    new Button.OnClickListener() {
        public void onClick(View view) {          
            try{
              float sum = Integer.valueOf(n1) + Integer.valueOf(n2);
              String a = Float.toString(sum);
              a = a.trim();
              resu.setText(""+a);
            }catch(Exception e){
              resu.setText(""+e);
            }
        }    
    );

将以下代码移到您的 onlick() 方法中,因为在您的 oncreate() 中,如果 EditText 为空,它将 return 空字符串 (""),因此您需要在单击按钮时获取值,而不是在单击按钮之前:

final String n1 = num1.getText().toString();

final String n2 = num2.getText().toString();

收件人:

plus.setOnClickListener(new Button.OnClickListener() {
    public void onClick(View view) {
        try {
            final String n1 = num1.getText().toString();
            final String n2 = num2.getText().toString();
            float sum = Integer.valueOf(n1) + Integer.valueOf(n2);
            String a = Float.toString(sum);
            a = a.trim();
            resu.setText(""+a);
        } catch(Exception e) {
            resu.setText(""+e);
        }
    }
});

问题在于 Integer 对象到 float 原始类型的转换。我认为如果您输入一个整数,那么您的代码应该可以正常工作。代码

float sum = Integer.valueOf(n1) + Integer.valueOf(n2);

但是,如果它不是整数,那么为了反驳 NumberFormatException,您无法将 String 转换为适当的原始数据类型。

并通过 if(n1=="")

检查 n1n2 中的空字符串 ("")
plus.setOnClickListener(new Button.OnClickListener() {
        public void onClick(View view) {

            try
            {
               final String n1 = num1.getText().toString();    
               final String n2 = num2.getText().toString();
               if(n1==""){
                  n1="0";
               }
               float sum = Float.valueOf(n1) + Float.valueOf(n2);
               String a = Float.toString(sum);
                a = a.trim();
                resu.setText(""+a);
            }

            catch(Exception e)
            {
                resu.setText(""+e);
            }
        }
      });