从edittext解析数据到双重问题

时间:2017-05-03 17:58:53

标签: java android double

我正在尝试从edittext读取数据并将它们存储在双变量中,但问题是数据没有存储在变量中以使其清楚,我有这段代码:

 String RR=Editcredit1.getText().toString();
       double w4;
        try {
            w4 = Double.parseDouble(RR);
        } catch (NumberFormatException e) {
            w4 = 3; // your default value
        }

上面的代码我试图将edittex值存储在变量中但是它会变为默认值3,如果我更改代码并使其像这样

 String RR=Editcredit1.getText().toString();
       double w4;//=Double.parseDouble(Editcredit1.getText().toString());
        try {
            w4 = 0;
        } catch (NumberFormatException e) {
            w4 = 3; // your default value
        }

它会选择0这对我来说非常混乱,任何人都可以帮助我,因为我一直试图解决它3天。

2 个答案:

答案 0 :(得分:1)

当你致电Double.parseDouble()时,它可能会抛出异常。例如,如果RR的值为"123aef",则不会对其进行解析,并且会抛出NumberFormatException

但是,如果像第二种情况一样设置w4 = 0,则不会抛出任何异常,因为它是一个合法的声明。

此外,可能是RR中包含空格字符的情况,因此这也可能导致抛出异常。尝试记录由某些分隔符(作为引号)包围的RR字符串值,以验证您是否有正确的输入

希望这有帮助!

答案 1 :(得分:0)

将“,”替换为“。”在用户输入中。如果用户输入12,2,则会抛出错误。并且您的catch语句设置默认值。只需在定义变量时设置默认值即可。并在catch语句中发生错误时通知您的用户。检查代码中的注释

String RR=Editcredit1.getText().toString();
double w4=0;  
//Set your default values at variable definition.

try {
    w4 = Double.parseDouble(RR.replace(",",".")); 
    //replace "," to "." for convert
} catch (NumberFormatException e) {
    //there is an error, do not set any variables, warn user show error e.getMessage() or more user friendly, E.g."Please enter numeric value"
    //maybe stop procedure with return; statement.
    e.printStackTrace();//or print trace to console
}