猿问

如何在一个文本视图中添加各种编辑文本

我是编程新手,我需要你的帮助,我在editText txt50中插入数字时遇到错误,应用程序崩溃请帮助我,我不知道是什么错误:


法典:


public class Main2Activity extends AppCompatActivity {


   private EditText cinco, cien, doscientos, quinientos, mil, dosmil, cincomil, diezmil, veintemil, cincuentamil, cienmil;

    private TextView diezmob;


    public static final String nombres = "names";

    TextView txtBienvenido;


    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main2);


        txtBienvenido = (TextView) findViewById(R.id.txtbienvenido);

        String usuario = getIntent().getStringExtra("names");

        txtBienvenido.setText("¡Bienvenido(a) Hermano(a) " + usuario + "!");


        diezmob = (TextView) findViewById(R.id.txtdiezmob);

        cinco = (EditText) findViewById(R.id.txt50);

        cien = (EditText) findViewById(R.id.txt100);

        doscientos = (EditText) findViewById(R.id.txt200);

        quinientos = (EditText) findViewById(R.id.txt500);

        mil = (EditText) findViewById(R.id.txt1000);

        dosmil = (EditText) findViewById(R.id.txt2000);

        cincomil = (EditText) findViewById(R.id.txt5000);

        diezmil = (EditText) findViewById(R.id.txt10000);

        veintemil = (EditText) findViewById(R.id.txt20000);

        cincuentamil = (EditText) findViewById(R.id.txt50000);

        cienmil = (EditText) findViewById(R.id.txt100000);


        cinco.addTextChangedListener(new TextWatcher() {


            @Override

            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }


            @Override

            public void onTextChanged(CharSequence s, int start, int before, int count) {


            }

        });

    } }

日志:在编辑文本 txt50 中插入数字时出错,应用程序崩溃:


java.lang.NumberFormatexception: 无效的双精度: “”


慕森卡
浏览 102回答 2
2回答

慕森王

我用这个代码解决这个错误,任何错误请说出来。package com.example.josue.login;import android.app.DatePickerDialog;import android.content.Intent;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.DatePicker;import android.widget.EditText;import android.widget.TextView;import java.util.Calendar;public class Main2Activity extends AppCompatActivity implements View.OnClickListener {    private TextView diezmob;    public static final String nombres = "names";    TextView txtBienvenido;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main2);        txtBienvenido = (TextView) findViewById(R.id.txtbienvenido);        String usuario = getIntent().getStringExtra("names");        txtBienvenido.setText("¡Bienvenido(a) Hermano(a) " + usuario + "!");        diezmob = (TextView) findViewById(R.id.txtdiezmob);        findViewById(R.id.btncalcular).setOnClickListener(this);        findViewById(R.id.btncalcular5).setOnClickListener(this);        findViewById(R.id.btncalcular10).setOnClickListener(this);        findViewById(R.id.btncalcular15).setOnClickListener(this);    }    @Override    public void onClick(View v) {        switch (v.getId()) {            case R.id.btncalcular:                double cinco, cien, doscientos, quinientos, mil, dosmil, cincomil, diezmil, veintemil, cincuentamil, cienmil;                String Cinco = ((EditText) findViewById(R.id.txt50)).getText().toString();                String Cien = ((EditText) findViewById(R.id.txt100)).getText().toString();                String Doscientos = ((EditText) findViewById(R.id.txt200)).getText().toString();                String Quinientos = ((EditText) findViewById(R.id.txt500)).getText().toString();                String Mil = ((EditText) findViewById(R.id.txt1000)).getText().toString();                String Dosmil = ((EditText) findViewById(R.id.txt2000)).getText().toString();                String Cincomil = ((EditText) findViewById(R.id.txt5000)).getText().toString();                String Diezmil = ((EditText) findViewById(R.id.txt10000)).getText().toString();                String Veintemil = ((EditText) findViewById(R.id.txt20000)).getText().toString();                String Cincuentamil = ((EditText) findViewById(R.id.txt50000)).getText().toString();                String Cienmil = ((EditText) findViewById(R.id.txt100000)).getText().toString();                if (Cinco != null && !Cinco.equals("")) {                    cinco =  Double.valueOf(Cinco);                }else{                    cinco = 0;                }                if (Cien != null && !Cien.equals("")){                    cien =   Double.valueOf(Cien);                }else{                    cien=0;                }                if (Doscientos != null && !Doscientos.equals("")) {                    doscientos =  Double.valueOf(Doscientos);                }else{                    doscientos=0;                }                if (Quinientos != null && !Quinientos.equals("")) {                    quinientos = Double.valueOf(Quinientos);                }else{                    quinientos = 0;                }                if (Mil != null && !Mil.equals("")){                    mil = Double.valueOf(Mil);                }else{                    mil = 0;                }                if (Dosmil != null && !Dosmil.equals("")) {                    dosmil = Double.valueOf(Dosmil);                }else {                    dosmil = 0;                }                if (Cincomil != null && !Cincomil.equals("")) {                    cincomil = Double.parseDouble(Cincomil);                }else {                    cincomil = 0;                }                if (Diezmil !=null && !Diezmil.equals("")) {                    diezmil = Double.valueOf(Diezmil);                }else {                    diezmil = 0;                }                if (Veintemil != null && !Veintemil.equals("")) {                    veintemil = Double.valueOf(Veintemil);                }else {                    veintemil = 0;                }                if (Cincuentamil != null && !Cincuentamil.equals("") ) {                    cincuentamil = Double.valueOf(Cincuentamil);                }else {                    cincuentamil = 0;                }                if (Cienmil != null && !Cienmil.equals("")    ) {                    cienmil = Double.valueOf(Cienmil);                }else {                    cienmil = 0;                }                double suma = (cinco * 50) + (cien * 100) + (doscientos * 200) + (quinientos * 500) + (mil * 1000) +                            (dosmil * 2000) + (cincomil * 5000) + (diezmil * 10000) + (veintemil * 20000) + (cincuentamil * 50000) +                            (cienmil * 100000);                    String resultado = String.valueOf((int)(suma));                    diezmob.setText(String.valueOf(resultado));                break;            case R.id.btncalcular5:                Intent i = new Intent(this, Main5Activity.class);                i.putExtra("dato",diezmob.getText().toString());                startActivity(i);                break;            case R.id.btncalcular10:                Intent ii = new Intent(this, Main5Activity.class);                startActivity(ii);                break;            case                    R.id.btncalcular15:                Intent iii = new Intent(this, Main5Activity.class);                startActivity(iii);                break;            default:                break;        }    }}

富国沪深

让我们来评估一下:if ((cinco.toString().equals("")) && (!cinco.toString().equals(null)) && (cinco.toString().isEmpty() || (cinco.toString().length() >= 0))) {                        double valor1 = Double.parseDouble((cinco.getText().toString()));你说如果(“cinco是一个空字符串”)和(不是空)和(是空的(与空字符串相同))或长度>= 0),那么解析双精度我很确定唯一一次这个评估为真的是,如果cinco是空的,这将导致一个数字格式异常,因为你试图解析cinco一个双倍,而它是空的。您必须使用试捕获块处理异常:try {    double valor1 = Double.parseDouble((cinco.getText().toString()));} catch (NumberFormatException e) {    e.printStackTrace();}或者构造如果不允许在 cinco 为空时对其进行求值的语句:if(cinco.toString() != null && !(cinco.toString().isEmpty() {    double valor1 = Double.parseDouble((cinco.getText().toString()));} 编辑:代码中的所有双精度双倍都会抛出数字格式异常,而不仅仅是顺便说一句。那个只是第一个,所以这个答案适用于所有解析。
随时随地看视频慕课网APP

相关分类

Java
我要回答