java.lang.NumberFormatException:无效的int:“”

时间:2016-08-24 20:41:41

标签: java android numberformatexception

我正在java.lang.NumberFormatException: Invalid int: error

我认为声明是合适的

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

    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);
                }
            }    
        );
    

2 个答案:

答案 0 :(得分:2)

onlick()方法中移动以下代码,因为在oncreate()中,如果EditText为空,则会返回空字符串(“”),因此您需要获取值单击按钮时,而不是之前:

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);
        }
    }
});

答案 1 :(得分:0)

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

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

但如果它不是一个完整的数字,那么为了使NumberFormatException无法将String转换为适当的原始数据类型。

并检查n1中的空字符串("")和n2下的if(n1=="")

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);
            }
        }
      });