在我的edittext中,我需要检查它是否仅输入零。例如,我有一个edittext用于输入Bank的IFSc代码。它只接受字母和数字。因此,假设用户仅为14个字符输入零。我需要检查一下,我发现的一个解决方案是将字符串转换为整数并加在一起,是否为零意味着用户只为我编写的代码输入了zer,但它无法正常工作。任何人都可以帮我解决这个问题。
int ifno = Integer.parseInt(ifsc);
int sum = 0;
while (ifno == 0)
{
sum = sum + ifno % 10;
ifno = ifno / 10;
}
if(sum == 0)
{
Toast.makeText(Neft_Details.this, "Not a valid IFSC Code", Toast.LENGTH_LONG).show();
}
答案 0 :(得分:1)
我认为您需要更改while
循环试试这个..
String ifsc = "00000000000000";
int ifno = Integer.parseInt(ifsc);
int sum = 0;
while (ifno != 0){
ifno = ifno / 10;
sum = sum + ifno;
}
if(sum == 0){
Toast.makeText(Neft_Details.this, "Not a valid IFSC Code", Toast.LENGTH_LONG).show();
// System.out.println("Invalid value");
}
答案 1 :(得分:0)
我为你做了一个非常简单的例子,它有效:
EditText info;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
info = (EditText)findViewById(R.id.infoNum);
Button okButton = (Button)findViewById(R.id.okBtn);
okButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int infoINt = Integer.parseInt(info.getText().toString());
if(infoINt == 0){
Toast.makeText(getBaseContext(),"Not a valid IFSC Code",Toast.LENGTH_LONG).show();
}else{
// do your true logic here
}
}
});
}
也许错误出现在您的逻辑区域中。
使用ValidationExpression也可以正常工作
答案 2 :(得分:0)
尝试使用Integer的valueOf()方法。以下是查找给定字符串的确切值的示例。
String value = "000000";
value = Integer.valueOf(value).toString();
System.out.println("result for check: "+value);
Output:
0
希望这会对你有所帮助
答案 3 :(得分:0)
另一种方法是,您可以尝试在代码中定义这样的测试函数。
public static boolean isAllZeros(String text) {
char zero = '0';
for (int i=0; i<text.length()-1; i++) {
if (!(text.charAt(i) == zero)) {
return false;
}
}
return true;
}
然后通过传递给此函数来测试在EditText中输入的字符串。这样您就可以避免将其解析为整数,并且可以直接检查输入的字符串。
if(Test.isAllzeros(editextString)) {
Toast.makeText(Neft_Details.this, "Not a valid IFSC Code",
Toast.LENGTH_LONG).show();
} else {
// Do whatever you want in here.
}