我有这个代码:
private void submitPstart() {
if (tStock.getText().charAt(0)>='A' && tStock.getText().charAt(0)<='Z'){
}else {
errorBox ("Uppercase A-Z");
}
tStock.setText("");
tStock.setFocus();
}
Run Code Online (Sandbox Code Playgroud)
这是有效但当我尝试不在文本框上放任何东西并按下确定按钮时它会崩溃.它说:
java.lang.StringIndexOutOfBoundsException: String index out of range: 0
它指出了这一部分: if (tStock.getText().charAt(0)>='A' && tStock.getText().charAt(0)<='Z')
任何帮助表示赞赏.谢谢
您需要检查是否getText()返回0长度(即空)字符串.
如果确实如此,那就不要试图拉出第一个角色!(通过charAt())
请注意,您的注释掉检查length()应该在现有字符检查之前进行.
您可能还希望检查是否返回了返回的空字符串,具体取决于您的框架/解决方案等.请注意Apache Commons StringUtils.isEmpty()方法,它简明地执行此检查.
您必须检查 null 和长度大于 0。
if (tStockPIStart!=null && tStockPIStart.getText().length()>0 && tStockPIStart.getText().charAt(0)>='A' && tStockPIStart.getText().charAt(0)<='Z'){
Run Code Online (Sandbox Code Playgroud)