我正在尝试从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天。
答案 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
}