我正在尝试检测一个字符串是否具有数字值和字母值。如果只有数字,则
用于帮助的链接如下: 如何检查Java中的字符串是否仅包含数字 Java - 查看字符串中是否包含任何字符 判断字符串中是否包含a-z字符 MainActivity:
AmountBoolean = true
,如果既有数字又有字母,则AmountBoolean = false
。我找不到一种方法使其正常工作。看起来我已经找到了一种方法,但是在运行时崩溃,并在logcat中声明onClick
if语句是一个问题,但我不知道为什么或如何解决它。用于帮助的链接如下: 如何检查Java中的字符串是否仅包含数字 Java - 查看字符串中是否包含任何字符 判断字符串中是否包含a-z字符 MainActivity:
public class MainActivity extends AppCompatActivity {
Button Enter;
EditText eName,eDate,eAmount;
ListView lDebtList;
TextView tName,tDate,tAmount;
Boolean AmountBoolean = false;
String currentDate,name,amount,date;
Toast toastName,toastDate,toastAmount;
ArrayList<String> AmountlistItems = new ArrayList<String>();
ArrayList<String> DateListItems = new ArrayList<String>();
ArrayList<String> NameListItems = new ArrayList<String>();
ArrayAdapter<String> AmountAdapter;
ArrayAdapter<String> DateAdapter;
ArrayAdapter<String> NameAdapter;
String numRegex = ".*[0-9].*";
String alphaRegex = ".*[A-Z].*";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Enter = findViewById(R.id.Enter);
eAmount = findViewById(R.id.eAmount);
eDate = findViewById(R.id.eDate);
eName = findViewById(R.id.eName);
lDebtList = findViewById(R.id.lDebtList);
tAmount = findViewById(R.id.tAmount);
tDate = findViewById(R.id.tDate);
tName = findViewById(R.id.tName);
eAmount.clearFocus();
eDate.clearFocus();
eName.clearFocus();
currentDate = new SimpleDateFormat("MM-dd-yyyy", Locale.getDefault()).format(new Date());
tAmount.setText("Amount:");
tDate.setText("Date Owed");
tName.setText("Name:");
eAmount.setHint("$$$");
eDate.setHint(currentDate);
eName.setHint("John Doe");
amount = eAmount.getText().toString();
date = eDate.getText().toString();
name = eName.getText().toString();
if (amount.contains(numRegex) && !amount.contains(alphaRegex)) {
AmountBoolean = true;
}
if(amount.matches(numRegex) && amount.contains(alphaRegex)){
AmountBoolean = false;
}
AmountAdapter = new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_list_item_1, AmountlistItems);
lDebtList.setAdapter(AmountAdapter);
}
public void onEnter(View view){
if(AmountBoolean){
//AmountAdapter.add(amount);
AmountAdapter.add(eAmount.getText().toString());
AmountAdapter.notifyDataSetChanged();
}
if(!AmountBoolean){
toastAmount = Toast.makeText(this, "Please correct Amount Owed", Toast.LENGTH_SHORT);
toastAmount.show();
}
}
}
非常感谢您的帮助。如果有更简单的方法,请不要犹豫,告诉我。我知道这个问题以前已经被问过了,但我已经花了几个小时尝试各种方法,但都没有成功,所以只好求助于此。