Android 浮点数和负数验证
Posted
技术标签:
【中文标题】Android 浮点数和负数验证【英文标题】:Android Floating Point and Negative Numbers Validation 【发布时间】:2013-04-02 18:38:28 【问题描述】:public void updateDisplay(View v)
Button button = (Button) findViewById(R.id.button1);
button.setOnClickListener(new View.OnClickListener()
public void onClick(View view)
tempNumber.setText(tempNumber.getText().toString() + ((Button) view).getText());
);
tempNumber.setText( tempNumber.getText().toString() + ((Button) v).getText() );
<Button
android:id="@+id/button1"
android:layout_
android:layout_
android:layout_weight="0.1"
android:background="@drawable/button"
android:onClick="updateDisplay"
android:text="1"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:textColor="@drawable/button_tx_color"
android:textSize="15sp" />
<Button
android:id="@+id/button2"
android:layout_
android:layout_
android:layout_weight="0.1"
android:background="@drawable/button"
android:onClick="updateDisplay"
android:text="2"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:textColor="@drawable/button_tx_color"
android:textSize="15sp" />
<Button
android:id="@+id/button3"
android:layout_
android:layout_
android:layout_weight="0.1"
android:background="@drawable/button"
android:onClick="updateDisplay"
android:text="3"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:textColor="@drawable/button_tx_color"
android:textSize="15sp" />
<Button
android:id="@+id/button4"
android:layout_
android:layout_
android:layout_weight="0.1"
android:background="@drawable/button"
android:onClick="updateDisplay"
android:text="4"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:textColor="@drawable/button_tx_color"
android:textSize="15sp" />
<Button
android:id="@+id/button5"
android:layout_
android:layout_
android:onClick="updateDisplay"
android:layout_weight="0.1"
android:background="@drawable/button"
android:text="5"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:textColor="@drawable/button_tx_color"
android:textSize="15sp" />
<Button
android:id="@+id/button6"
android:layout_
android:layout_
android:onClick="updateDisplay"
android:layout_weight="0.1"
android:background="@drawable/button"
android:text="6"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:textColor="@drawable/button_tx_color"
android:textSize="15sp" />
<Button
android:id="@+id/button7"
android:layout_
android:layout_
android:onClick="updateDisplay"
android:layout_weight="0.1"
android:background="@drawable/button"
android:padding="0sp"
android:text="7"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:textColor="@drawable/button_tx_color"
android:textSize="15sp" />
<Button
android:id="@+id/button8"
android:layout_
android:layout_
android:onClick="updateDisplay"
android:layout_weight="0.1"
android:background="@drawable/button"
android:text="8"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:textColor="@drawable/button_tx_color"
android:textSize="15sp" />
<Button
android:id="@+id/button9"
android:layout_
android:layout_
android:onClick="updateDisplay"
android:layout_weight="0.1"
android:background="@drawable/button"
android:text="9"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:textColor="@drawable/button_tx_color"
android:textSize="15sp" />
<Button
android:id="@+id/button0"
android:layout_
android:layout_
android:onClick="updateDisplay"
android:layout_weight="0.1"
android:background="@drawable/button"
android:text="0"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:textColor="@drawable/button_tx_color"
android:textSize="15sp" />
<Button
android:id="@+id/buttonDot"
android:layout_
android:layout_
android:onClick="updateDisplay"
android:layout_weight="0.1"
android:background="@drawable/button"
android:text="."
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:textColor="@drawable/button_tx_color"
android:textSize="15sp" />
<Button
android:id="@+id/buttonM"
android:layout_
android:layout_
android:onClick="updateDisplay"
android:layout_weight="0.1"
android:background="@drawable/button"
android:text="-"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:textColor="@drawable/button_tx_color"
android:textSize="15sp" />
我的代码很少,可以在单击按钮时更新和创建数字。 一切正常,但我想对浮点数和负数进行一些验证。
错误: 12.343.325.4
正确: 12.343(第二个点不能写)
错误 12-324-45
正确 -1234
tempNumber 是一个 TextView,我在其中显示结果,仅此而已。
【问题讨论】:
【参考方案1】:我不确定我是否理解您的要求,因为这似乎就像在 onClick 方法中添加更多代码以防止错误值一样简单。比如:
new View.OnClickListener()
private boolean dotPresent;
public void onClick(View view)
String buttonText = ((Button)view).getText().toString();
boolean isDot = buttonText.equals(".");
boolean isSign = buttonText.equals("-");
int currentLength = tempNumber.getText().length();
if (isSign && currentLength != 0) return;
if (isDot && dotPresent) return;
tempNumber.setText(tempNumber.getText().toString() + buttonText);
if (isDot) dotPresent = true;
上一个类应该只创建一次,并使用 setOnClickListener() 分配给每个按钮。
顺便说一句,另一种可能性是考虑使用普通的 EditText 作为 inputType TYPE_CLASS_NUMBER | TYPE_NUMBER_FLAG_DECIMAL | TYPE_NUMBER_FLAG_SIGNED。然后软键盘应该为用户提供一个数字键盘,并且还存在防止错误值的过滤器。 Android 文档中的更多信息:http://developer.android.com/reference/android/text/InputType.html#TYPE_NUMBER_FLAG_DECIMAL
【讨论】:
以上是关于Android 浮点数和负数验证的主要内容,如果未能解决你的问题,请参考以下文章
阅读《C++Primer》的个人记录——2.1基本内置类型-关于浮点数补码