簡體   English   中英

我的程序出現運行時錯誤:線程“ main”中的異常java.lang.StringIndexOutOfBoundsException:字符串索引超出范圍:27

[英]My program has a runtime error: exception in thread “main” java.lang.StringIndexOutOfBoundsException: String index out of range: 27

這是我收到的完整錯誤消息:

 exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 27 at java.lang.String.charAt(String.java:646) at Main.main(Main.java:268) at Ideone.assertRegex(Main.java:110) at Ideone.test(Main.java:42) at Ideone.main(Main.java:28) 

我用DrJava編寫了用於類分配的程序,並且可以運行,但是當我將代碼輸入其代碼運行器時,會出現運行時錯誤。 我的代碼如下:

 import java.io.*; import static java.lang.System.*; import java.util.Scanner; class Main{ public static void main (String str[]) throws IOException { Scanner scan = new Scanner(System.in); System.out.println("Please enter a tweet:"); String tweet = scan.nextLine(); int length = tweet.length(); if(length > 140){ System.out.println("Excess Characters: " + (length - 140));} else{ System.out.println("Length Correct"); int countera = 0; for( int i=0; i<tweet.length(); i++ ) { if( tweet.charAt(i) == '#' ) { i++; if (( tweet.charAt(i) != ' ' ) && ( tweet.charAt(i) != '\\t' )) countera++; } } int counterb = 0; for( int i=0; i<tweet.length(); i++ ) { if( tweet.charAt(i) == '@' ) { i++; if (( tweet.charAt(i) != ' ' ) && ( tweet.charAt(i) != '\\t' )) counterb++; } } int counterc = 0 ; String search = "http://"; for ( int i = -1 ; ( i = tweet.indexOf( search, i + 1 ) ) != -1 ; counterc ++ ); System.out.println("Number of Hashtags: " + countera); System.out.println("Number of Attributions: " + counterb); System.out.println("Number of Links: " + counterc); } } } 

好吧,你寫了

for( int i=0; i<tweet.length(); i++ ) {
    if( tweet.charAt(i) == '#' ) {
        i++;
        if (( tweet.charAt(i) != ' ' ) && ( tweet.charAt(i) != '\t' )) {
          //rest of code
        }
    }
}

因此,當i達到tweet.length() - 1 ,將其添加為1,因此它變為tweet.length() 然后調用tweet.charAt(i) ,這將導致您遇到異常。

請記住,字符串的第一個字符在索引0處,最后一個在索引length - 1

暫無
暫無

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

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