Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.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转换为float-android eclipse_Java_Android - Fatal编程技术网

Java 将EditText转换为float-android eclipse

Java 将EditText转换为float-android eclipse,java,android,Java,Android,我想将EditText转换为float。我这样做: EditText edt = (EditText) findViewById(R.id.price); float number = Float.valueOf(edt.getText().toString()); 应用程序未加载到我的设备和模拟器中。在这两本书中都写着: "the application has stopped unexpectedly. please try again." 如果我删除此行: float number =

我想将
EditText
转换为float。我这样做:

EditText edt = (EditText) findViewById(R.id.price);
float number = Float.valueOf(edt.getText().toString());
应用程序未加载到我的设备和模拟器中。在这两本书中都写着:

"the application has stopped unexpectedly. please try again."
如果我删除此行:

float number = Float.valueOf(edt.getText().toString());
应用程序可以加载


我该怎么办?

如果
编辑文本中没有
数字
,则无法将其转换为浮点,您将获得
数字格式异常


因此,在
Float.valueOf
方法周围添加一个try catch。

应用程序很可能会崩溃,因为在应用程序刚刚启动时,您试图将EditText的内容转换为Float。此时,EditText可能为空,或者填充了布局文件中设置的一些默认文本,这可能会导致出现
NullPointerException
NumberFormatException

尝试在TextWatcher中获取浮点值:

edt.addTextChangedListener(new TextWatcher() {

    @Override
    public void afterTextChanged(Editable s) {
        // TODO Auto-generated method stub
        float number = Float.valueOf(edt.getText().toString());
    }

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        // TODO Auto-generated method stub

    }

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

    } 

});

您试图在应用程序打开后立即获取
EditText
的值,这意味着没有输入任何内容,应用程序将抛出
NumberFormatException


当您确定输入了某些内容时,仅应获取在
EditText
中输入的值,例如在
按钮的
OnClick
事件中,edt
必须包含文本,并且文本中的每个字符必须是数字或小数点。请特别注意,空字符串“”并不表示0。它不能解释为浮点值,因此将导致异常。只有“0”、“0.0”等可以解释为零


在获得值之前,您应该测试
edt
的值,并正确地捕获
异常。您还应该将
edt
inputType
设置为十进制。

我的猜测是
edt.getText().toString()
没有返回一个可以变成浮点的值。尝试在代码周围添加以下内容

`

` 这应该给你一个线索,为什么它会死

EditText edt = (EditText) findViewById(R.id.price);
float number=   Float.parseFloat(edt.getText().toString());
EditText edt = (EditText) findViewById(R.id.price);
float number=   Float.parseFloat(edt.getText().toString());