Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.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
Java 如何在edittext上显示双值-android_Java_Android_Android Edittext - Fatal编程技术网

Java 如何在edittext上显示双值-android

Java 如何在edittext上显示双值-android,java,android,android-edittext,Java,Android,Android Edittext,我正在创建一个应用程序,它从edittext中获取数字值,对它们进行计算,如折扣计算、货币兑换等,然后在另一个edittext中显示它们 我将值从string转换为Double,然后通过将Double转换为string再次在屏幕上显示它。我已经标记了计算和显示值的行 我的问题是,edittext上没有显示任何内容,logcat中也没有生成错误 public class Calculator extends Activity implements View.OnClickListener {

我正在创建一个应用程序,它从edittext中获取数字值,对它们进行计算,如折扣计算、货币兑换等,然后在另一个edittext中显示它们

我将值从string转换为Double,然后通过将Double转换为string再次在屏幕上显示它。我已经标记了计算和显示值的行

我的问题是,edittext上没有显示任何内容,logcat中也没有生成错误

public class Calculator extends Activity implements View.OnClickListener {

    EditText carat,list,price,total,discount,converter,discamt,caratrs;
    Button submit;
    Button one, two, three, four, five, six, seven, eight, nine, zero, clear,dot,calc;
    double int_list=0,int_carat=0,int_discount=0,int_converter=0,int_price=0,int_total=0,int_discamt=0,int_pricers=0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_calculator);

       carat=(EditText)findViewById(R.id.carat);
        list=(EditText)findViewById(R.id.list);
        price=(EditText)findViewById(R.id.price);
        total=(EditText)findViewById(R.id.total);
        discount=(EditText)findViewById(R.id.discount);
        converter=(EditText)findViewById(R.id.converter);
        discamt=(EditText)findViewById(R.id.discamt);
        caratrs=(EditText)findViewById(R.id.caratrs);

        submit=(Button)findViewById(R.id.submit);
        calc=(Button)findViewById(R.id.calculate);

        one = (Button) findViewById(R.id.one);
        two = (Button) findViewById(R.id.two);
        three = (Button) findViewById(R.id.three);
        four = (Button) findViewById(R.id.four);
        five = (Button) findViewById(R.id.five);
        six = (Button) findViewById(R.id.six);
        seven = (Button) findViewById(R.id.seven);
        eight = (Button) findViewById(R.id.eight);
        nine = (Button) findViewById(R.id.nine);
        zero = (Button) findViewById(R.id.zero);
        clear=(Button)findViewById(R.id.clear);
        dot=(Button)findViewById(R.id.dot);



        price.setInputType(InputType.TYPE_NULL);
        total.setInputType(InputType.TYPE_NULL);
        carat.setInputType(InputType.TYPE_NULL);
        list.setInputType(InputType.TYPE_NULL);
        converter.setInputType(InputType.TYPE_NULL);
        discount.setInputType(InputType.TYPE_NULL);
        discamt.setInputType(InputType.TYPE_NULL);
        caratrs.setInputType(InputType.TYPE_NULL);

        try{
            one.setOnClickListener(this);

            two.setOnClickListener(this);

            three.setOnClickListener(this);

            four.setOnClickListener(this);

            five.setOnClickListener(this);

            six.setOnClickListener(this);

            seven.setOnClickListener(this);

            eight.setOnClickListener(this);

            nine.setOnClickListener(this);

            zero.setOnClickListener(this);


            dot.setOnClickListener(this);

        }
        catch(Exception e){

        }


        clear.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(carat.isFocused())
                {
                    carat.setText("");
                }
                else if(price.isFocused())
                {
                    price.setText("");
                }
                else if(total.isFocused())
                {
                    total.setText("");
                }
                else if(list.isFocused())
                {
                    list.setText("");
                }
                else if(discount.isFocused())
                {
                    discount.setText("");
                }
                else if(converter.isFocused())
                {
                    converter.setText("");
                }
                else if(discamt.isFocused())
                {
                    discamt.setText("");
                }
                else if(caratrs.isFocused())
                {
                    caratrs.setText("");
                }
            }
        });

---------------------------This is where all the calculation takes place including displaying the value on the edittext-----------------------------



    calc.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            try {
                int_list = Double.parseDouble(list.getText().toString());
                int_carat = Double.parseDouble(carat.getText().toString());
                int_discount = Double.parseDouble(discount.getText().toString());
                int_converter = Double.parseDouble(converter.getText().toString());
                int_discamt = Double.parseDouble(discamt.getText().toString());


                int_discamt = (int_list * int_discount) / 100;
                int_price = int_list - int_discamt;
                int_pricers = int_price * int_converter;
                int_total = int_price * int_converter * int_carat;


                price.setText(Double.toString(int_price));
                discamt.setText(Double.toString(int_discamt));
                caratrs.setText(Double.toString(int_pricers));
                total.setText(Double.toString(int_total));
            }
            catch(NumberFormatException e)
            {
                e.printStackTrace();
            }

        }
    });

     }


    @Override
    public void onClick(View v) {



        if(carat.isFocused())
        {
            carat.setText(carat.getText().toString() + ((Button) v).getText());
        }

        else if(list.isFocused())
        {
            list.setText(list.getText().toString() +((Button)v).getText());
        }
         else if(discount.isFocused())
        {
            discount.setText(discount.getText().toString() +((Button)v).getText());
        }
        else if(converter.isFocused())
        {
            converter.setText(converter.getText().toString() +((Button)v).getText());
        }


    }

}
这就是我在logcat中得到的

05-07 18:00:14.918  14299-14299/com.diamond.traders W/System.err﹕ java.lang.NumberFormatException: Invalid double: ""
05-07 18:00:14.918  14299-14299/com.diamond.traders W/System.err﹕ at java.lang.StringToReal.invalidReal(StringToReal.java:63)
05-07 18:00:14.918  14299-14299/com.diamond.traders W/System.err﹕ at java.lang.StringToReal.parseDouble(StringToReal.java:248)
05-07 18:00:14.918  14299-14299/com.diamond.traders W/System.err﹕ at java.lang.Double.parseDouble(Double.java:295)
05-07 18:00:14.918  14299-14299/com.diamond.traders W/System.err﹕ at com.diamond.traders.Calculator$2.onClick(Calculator.java:176)
05-07 18:00:14.918  14299-14299/com.diamond.traders W/System.err﹕ at android.view.View.performClick(View.java:4438)
05-07 18:00:14.918  14299-14299/com.diamond.traders W/System.err﹕ at android.view.View$PerformClick.run(View.java:18422)
05-07 18:00:14.918  14299-14299/com.diamond.traders W/System.err﹕ at android.os.Handler.handleCallback(Handler.java:733)
05-07 18:00:14.918  14299-14299/com.diamond.traders W/System.err﹕ at android.os.Handler.dispatchMessage(Handler.java:95)
05-07 18:00:14.918  14299-14299/com.diamond.traders W/System.err﹕ at android.os.Looper.loop(Looper.java:136)
05-07 18:00:14.918  14299-14299/com.diamond.traders W/System.err﹕ at android.app.ActivityThread.main(ActivityThread.java:5017)
05-07 18:00:14.918  14299-14299/com.diamond.traders W/System.err﹕ at java.lang.reflect.Method.invoke(Native Method)
05-07 18:00:14.918  14299-14299/com.diamond.traders W/System.err﹕ at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
05-07 18:00:14.918  14299-14299/com.diamond.traders W/System.err﹕ at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
使用

使用


似乎您正试图将空字符串解析为double。 你应向以下机构查询:

if (edittext.getText().length > 0)

似乎您正试图将空字符串解析为double。 你应向以下机构查询:

if (edittext.getText().length > 0)

必须对所有EditText字段进行验证

calc.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String list = list.getText().toString().trim();
                String carat = carat.getText().toString().trim();
                String discount = discount.getText().toString().trim();
                String converter = converter.getText().toString().trim();
                String discamt = discamt.getText().toString().trim();

                if(list.length() > 0 && carat.length() > 0 && discount.length() > 0
                        && converter.length() > 0 && discamt.length() > 0 )
                {
                     try {
                            int_list = Double.parseDouble(list.getText().toString());
                            int_carat = Double.parseDouble(carat.getText().toString());
                            int_discount = Double.parseDouble(discount.getText().toString());
                            int_converter = Double.parseDouble(converter.getText().toString());
                            int_discamt = Double.parseDouble(discamt.getText().toString());


                            int_discamt = (int_list * int_discount) / 100;
                            int_price = int_list - int_discamt;
                            int_pricers = int_price * int_converter;
                            int_total = int_price * int_converter * int_carat;


                            price.setText(Double.toString(int_price));
                            discamt.setText(Double.toString(int_discamt));
                            caratrs.setText(Double.toString(int_pricers));
                            total.setText(Double.toString(int_total));
                     }
                    catch(NumberFormatException e)
                    {
                        e.printStackTrace();
                    }
                }else
                {
                    Toast.makeText(context, "Please enter all value.", Toast.LENGTH_SHORT).show();
                }
            }
            });

必须对所有EditText字段进行验证

calc.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String list = list.getText().toString().trim();
                String carat = carat.getText().toString().trim();
                String discount = discount.getText().toString().trim();
                String converter = converter.getText().toString().trim();
                String discamt = discamt.getText().toString().trim();

                if(list.length() > 0 && carat.length() > 0 && discount.length() > 0
                        && converter.length() > 0 && discamt.length() > 0 )
                {
                     try {
                            int_list = Double.parseDouble(list.getText().toString());
                            int_carat = Double.parseDouble(carat.getText().toString());
                            int_discount = Double.parseDouble(discount.getText().toString());
                            int_converter = Double.parseDouble(converter.getText().toString());
                            int_discamt = Double.parseDouble(discamt.getText().toString());


                            int_discamt = (int_list * int_discount) / 100;
                            int_price = int_list - int_discamt;
                            int_pricers = int_price * int_converter;
                            int_total = int_price * int_converter * int_carat;


                            price.setText(Double.toString(int_price));
                            discamt.setText(Double.toString(int_discamt));
                            caratrs.setText(Double.toString(int_pricers));
                            total.setText(Double.toString(int_total));
                     }
                    catch(NumberFormatException e)
                    {
                        e.printStackTrace();
                    }
                }else
                {
                    Toast.makeText(context, "Please enter all value.", Toast.LENGTH_SHORT).show();
                }
            }
            });
它只是说明您试图解析为
double
字符串之一是

确保您的
EditText
具有值

您可以使用
String.valueOf(total)
转换为
String

注意:

  • 确保您的
    EditText
    不是空的,使用
    ed.getText().toString().equals(“”
    (可能需要一些其他验证,这只是一个示例)在可能出现异常时验证代码并用try-catch包围代码

  • 您可能将id放置在错误的
    EditText
    位置,该位置在计算过程中保持为空,因此请检查

它只是说明您试图解析为
double
字符串之一是

确保您的
EditText
具有值

您可以使用
String.valueOf(total)
转换为
String

注意:

  • 确保您的
    EditText
    不是空的,使用
    ed.getText().toString().equals(“”
    (可能需要一些其他验证,这只是一个示例)在可能出现异常时验证代码并用try-catch包围代码

  • 您可能将id放置在错误的
    EditText
    位置,该位置在计算过程中保持为空,因此请检查

  • lint不建议使用Double.toString()
,因为它不考虑区域设置。考虑使用<代码> String。格式化(区域设置)“%F”,123D);<代码>
例如,您可以将
locale
替换为locale.US。

Double.toString()
不被lint推荐,因为它不考虑区域设置。考虑使用<代码> String。格式化(区域设置)“%F”,123D);<代码>

例如,您可以用locale.US替换
locale

您确定fire onclick listener。。在calc.setOnClickListener中打印一些内容并选中请在解析为双精度之前验证gettext()值。。。可能您得到的是导致此数字格式异常的空字符串。这是您的错误:java.lang.NumberFormatException:Invalid double:“”位于com.diamond.traders.Calculator$2.onClick(Calculator.java:176)——Calculator.java:176——您确实需要验证!parseDouble()之前为空是否确定为fire onclick listener。。在calc.setOnClickListener中打印一些内容并选中请在解析为双精度之前验证gettext()值。。。可能您得到的是导致此数字格式异常的空字符串。这是您的错误:java.lang.NumberFormatException:Invalid double:“”位于com.diamond.traders.Calculator$2.onClick(Calculator.java:176)——Calculator.java:176——您确实需要验证!在parseDouble()发现问题之前为空。谢谢你的帮助。我找到了问题。谢谢你的帮助。
int_list = Double.parseDouble(list.getText().toString());
int_carat = Double.parseDouble(carat.getText().toString());
int_discount = Double.parseDouble(discount.getText().toString());
int_converter = Double.parseDouble(converter.getText().toString());
int_discamt = Double.parseDouble(discamt.getText().toString());