我有这段代码:
private void submitPstart() {
if (tStock.getText().charAt(0)>='A' && tStock.getText().charAt(0)<='Z'){
}else {
errorBox ("Uppercase A-Z");
}
tStock.setText("");
tStock.setFocus();
}
这是有效但当我尝试不在文本框上放任何东西并按下OK按钮时它会崩溃。它说:
java.lang.StringIndexOutOfBoundsException: String index out of range: 0
它指出了这一部分:if (tStock.getText().charAt(0)>='A' && tStock.getText().charAt(0)<='Z')
感谢任何帮助。感谢
答案 0 :(得分:7)
您需要检查getText()
是否返回0长度(即空)字符串。
如果确实如此,那就不要试图拉出第一个角色! (通过charAt()
)
请注意,length()
的注释掉检查应之前现有字符检查。
您可能还想检查是否返回了返回的空字符串,具体取决于您的框架/解决方案等。请注意Apache Commons StringUtils.isEmpty()方法,它可以简洁地执行此检查。
答案 1 :(得分:3)
你必须检查null和长度大于0。
if (tStockPIStart!=null && tStockPIStart.getText().length()>0 && tStockPIStart.getText().charAt(0)>='A' && tStockPIStart.getText().charAt(0)<='Z'){
答案 2 :(得分:2)
尝试
if (tStockPIStart.getText().length() > 0 && tStockPIStart.getText().charAt(0)>='A' && tStockPIStart.getText().charAt(0)<='Z')
在您的情况下,如果文本为空,则返回的长度将为0.因此charAt(..)方法将引发异常。因此,您应首先检查您要比较的文本是否为空。
答案 3 :(得分:2)
添加
if (tStockPIStart!=null && tStockPIStart.length>0) {
[...]
}
答案 4 :(得分:0)
在Java 7中,您可以使用isEmpty方法在代码中使表达更具表现力
if (tStockPIStart.getText()!=null && !tStockPIStart.getText().isEmpty()) {
//do stuff
}
这与做length != 0
相同,但我个人认为更清楚。