android:inputType="numberDecimal" = Ok
...
问题是我无法得到答案,带有小数的应用程序总是崩溃。
我想做的是我要查找输入的三个数字中的最高数字。
if (one.getText().toString().length() == 0.0) {
one.setError("Required!");
} else if (two.getText().toString().length() == 0.0) {
two.setError("Required!");
} else if (three.getText().toString().length() == 0.0) {
three.setError("Required!");
} else {
int num1 = Integer.parseInt(one.getText().toString());
int num2 = Integer.parseInt(two.getText().toString());
int num3 = Integer.parseInt(three.getText().toString());
if (num1 >= num2 && num1 >= num3) {
output.setText("" + num1);
} else if (num2 >= num1 && num2 >= num3) {
output.setText("" + num2);
} else
output.setText("" + num3);
}
}
答案 0 :(得分:-1)
欢迎来到Stack Exchange ..!
首先,.length()
返回一个整数。因此,只需使用== 0
而不是== 0.0
。
我建议不要将字符串与0
进行比较,而应将长度与null
进行比较。使用editText.getString().equals(null)
获取true
或false
然后,Integer.parseInt()
返回一个整数和非十进制值。因此,使用Double.parseDouble()
获得类型为 Double
Integer.parseInt()
方法主要是导致错误的原因,因为方法仅查找字符串中的整数,并找到一个.
字符,感到困惑..!
请记住,在布局的XML文件的EditText
下,您必须像这样添加inputType
属性:
android:inputType="numberDecimal"
此属性告诉目标设备上的键盘输入是十进制数字。
希望这行得通..!
SDA
答案 1 :(得分:-2)
length()方法返回int (字符数怎么可以是小数??)
我猜您正在尝试编写代码以比较3个数字以找到最大的数字。您正在尝试检查是否提供了3个输入。
如果是这种情况,则只需检查args.length()= 3(或> 2并接受前3个输入)。然后尝试将其转换为int / float / double进行比较。
如果输入为小数,则使用Double.parseDouble()或Float.parseFloat()。