簡體   English   中英

使用chararray的字符串索引超出范圍異常

[英]String index out of bounds exception using chararray

以下代碼應將電話號碼字符轉換為實際的電話號碼整數。 例如800-NEXT-DAY = 800-639-8329。 但是,無論我進入result.substring索引是什么,我都會使字符串索引超出范圍部分,我也不知道為什么。 試圖找出解決方法。

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    String result = " ";
    System.out.print("Enter a phone number");
    String initialNumber = input.nextLine();

    for(char c: initialNumber.toLowerCase().toCharArray());
    switch(c){
    case '0':                                         result+="0";
    case '1':                                         result+="1";break;
    case '2': case 'a': case 'b': case 'c':           result+="2";break;
    case '3': case 'd': case 'e': case 'f':           result+="3";break;
    case '4': case 'g': case 'h': case 'i':           result+="4";break;
    case '5': case 'j': case 'k': case 'l':           result+="5";break;
    case '6': case 'm': case 'n': case 'o':           result+="6";break;
    case '7': case 'p': case 'q': case 'r': case 's': result+="7";break;
    case '8': case 't': case 'u': case 'v':           result+="8";break; 
    case '9': case 'w': case 'x': case 'y': case 'z': result+="9";break;
    }
    String s1 = result.substring(0, 3);
    String s2 = result.substring(3, 6);
    String s3 = result.substring(6, 9);

    System.out.print(s1+s2+s3);
}}

您的for循環結尾處的半冒號結束了您的for循環。 您不想結束for循環。 結束for循環不允許result用switch語句更新,導致在調用result.substringresult仍然是" " 更改; {

for(char c: initialNumber.toLowerCase().toCharArray()){
    switch(c){
    case '0':                                         result+="0";
    case '1':                                         result+="1";break;
    case '2': case 'a': case 'b': case 'c':           result+="2";break;
    case '3': case 'd': case 'e': case 'f':           result+="3";break;
    case '4': case 'g': case 'h': case 'i':           result+="4";break;
    case '5': case 'j': case 'k': case 'l':           result+="5";break;
    case '6': case 'm': case 'n': case 'o':           result+="6";break;
    case '7': case 'p': case 'q': case 'r': case 's': result+="7";break;
    case '8': case 't': case 'u': case 'v':           result+="8";break; 
    case '9': case 'w': case 'x': case 'y': case 'z': result+="9";break;
    }
}

同時在末尾添加一個} 這解決了您遇到的索引超出范圍的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM