簡體   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