繁体   English   中英

Java charAt()字符串索引超出范围:0

[英]Java charAt() String index out of range: 0

我有这个代码:

private void submitPstart() {

    if (tStock.getText().charAt(0)>='A' && tStock.getText().charAt(0)<='Z'){


    }else {
        errorBox ("Uppercase A-Z");
    }

    tStock.setText("");
    tStock.setFocus();
}

这是有效但当我尝试不在文本框上放任何东西并按下确定按钮时它会崩溃。 它说:

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'){

尝试

if (tStockPIStart.getText().length() > 0 && tStockPIStart.getText().charAt(0)>='A' && tStockPIStart.getText().charAt(0)<='Z')

在您的情况下,如果文本为空,则返回的长度将为0.因此charAt(..)方法将引发异常。 因此,您应首先检查您要比较的文本是否为空。

if (tStockPIStart!=null && tStockPIStart.length>0) {
    [...]
}

在Java 7中,您可以使用isEmpty方法在代码中使表达更具表现力

if (tStockPIStart.getText()!=null && !tStockPIStart.getText().isEmpty()) {
    //do stuff
}

这与做length != 0相同length != 0但我个人认为更清楚一点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM