长话短说,我的基本应用程序只有一个textview,2x edittexts(最小值,随机数的最大值)和一个按钮。如果提交了最小值和最大值,一切都没问题,但是当我离开空应用程序崩溃时(当然它应该崩溃),但是当我尝试添加一些if以避免这种情况时,但它并没有真有帮助。 我的代码片段应该发生崩溃:
int minimumValue = 1;
int maximumValue = 2;
int randomValue = 3;
if(!minimum.getText().toString().equals("")) {
minimumValue = Integer.parseInt(minimum.getText().toString());
}
if(maximum.getText().toString().equals("")) {
maximumValue = Integer.parseInt(maximum.getText().toString());
}
randomValue = minimumValue + (int)(Math.random() * ((maximumValue - minimumValue) + 1));
textview.setText("" + randomValue);
答案 0 :(得分:2)
请勿使用空字符串进行检查。可能会输入更多空格,导致您抛出Exception
。
当数据不是数字时,也有可能获得NumberFormatException
。
所以Chage你的代码就这样试试
if (minimum.getText().toString().trim().length() > 0) {
try {
minimumValue = Integer.parseInt(minimum.getText().toString());
} catch (NumberFormatException e) {
}
}
if (maximum.getText().toString().trim().length() > 0) {
try {
maximumValue = Integer.parseInt(maximum.getText().toString());
} catch (NumberFormatException e) {
}
}
答案 1 :(得分:1)
我认为你错过了#34;!"这里:
//if empty
if(maximum.getText().toString().equals("")) {
\\parse empty
maximumValue = Integer.parseInt(maximum.getText().toString());
}
尝试:
\\if empty
if(!maximum.getText().toString().equals("")) {
maximumValue = Integer.parseInt(maximum.getText().toString());
}