![](/img/trans.png)
[英]Runtime Error for an anagram - Exception in thread “main” java.lang.StringIndexOutOfBoundsException: String index out of range: -1
[英]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.