How to parse a double from EditText to TextView? (Android)

前端 未结 9 1192
时光取名叫无心
时光取名叫无心 2020-12-10 18:10

I\'m realy beginning to learn Java. When I run this code everything works fine till I leave my EditText boxes in the from empty and hit the run button. Then I get:

相关标签:
9条回答
  • 2020-12-10 18:10

    Try this code TextView_object.setText(new Double(sum).toString());

    0 讨论(0)
  • 2020-12-10 18:15

    Two things you can do: First, only allow numeric data in your EditText field. Actually, I see you already did that. I usually use android:numeric - this is the first I've seen of android:inputType. Thanks for that. =)

    Second, ensure that you have text in your EditText with a simple check.

    if(noKids.getText().length() > 0)
    {
        etKids = Double.parseDouble(noKids.getText().toString());
    }
    
    0 讨论(0)
  • 2020-12-10 18:20

    I think the best way to check if the value is correct is as follows:

       noKidsStr = noKids.getText().toString();
    
       try
       {
          etKids = Double.parseDouble(noKids.getText().toString());
       }
       catch (NumberFormatException e)
       {
          //Here request a valid value
          Toast.makeText(getBaseContext(), "value is not valid", Toast.LENGTH_LONG).show();
          noKids.requestFocus();
          return;
    
          //Or you can add a value
    
        }
    }
    

    I think this method is more elegant and takes into account any kind of input they add. BR, Adrian.

    0 讨论(0)
  • 2020-12-10 18:21

    Here is the JavaDoc for java.lang.Double class, parseDouble method:

    /**
     * Parses the specified string as a double value.
     * 
     * @param string
     *            the string representation of a double value.
     * @return the primitive double value represented by {@code string}.
     * @throws NumberFormatException
     *             if {@code string} is {@code null}, has a length of zero or
     *             can not be parsed as a double value.
     * @since Android 1.0
     */
    

    Empty values are not considered to be parseable. That's why you get this exception.

    You can intoduce an additional check to your code to see if string in the noKids EditText is empty and if so, manually set the value to 0.0:

    noKidsStr = noKids.getText().toString();
    
    if(noKidsStr == null || noKidsStr.isEmpty()) {
    
      etKids = 0.0;
    
    } else {
    
      etKids = Double.parseDouble(noKids.getText().toString());
    
    }
    

    I suggest writing some sort of convenience utility method that you can re-use for all similar situations in the future.

    0 讨论(0)
  • 2020-12-10 18:23
    private void calculate() {
             try{
                etKids = Double.parseDouble(noKids.getText().toString());
                etGumballs = Double.parseDouble(noGumballs.getText().toString());
                tvSumIn = etGumballs / etKids; 
              }catch(exception e)
              {
                e.printStackTrace():
              }    
            String thisIsIt = new Double(tvSumIn).toString();
    
                if(tvSumIn < 2){
                    noSum.setText(thisIsIt + " This is it ");
                }else{
                    noSum.setText("This is else");
                }
    
            }
    
    0 讨论(0)
  • 2020-12-10 18:26

    you should wrap the Double.parseDouble.. statements in a try/catch clause, to catch any NumberFormatExceptions, and set other values where they fail

    edit:

    try{
        etKids = Double.parseDouble(noKids.getText().toString());
    } catch (final NumberFormatException e) {
        etKids = 1.0;
    }
    try{
        etGumballs = Double.parseDouble(noGumballs.getText().toString());
    } catch (final NumberFormatException e) {
        etGumballs = 1.0;
    } 
    
    0 讨论(0)
提交回复
热议问题