2017-10-04 80 views
-4

這是我的代碼異常在線程 「主」 java.lang.StringIndexOutOfBoundsException:字符串索引超出範圍:-18

import java.util.Scanner; 
import java.io.*; 

class Main { 
public static void main (String[] args)throws IOException { 
    Scanner scan = new Scanner(System.in); 
    System.out.println ("Enter message board post:"); 
    String username = scan.nextLine(); 
    String check = username.substring (username.indexOf(" ")+3 , username.length()).toLowerCase()+" "; 
    int a = check.indexOf(" ^^ "); 
    int b = check.indexOf (" qey "); 
    int c = check.indexOf (" $ "); 
    String first = username.substring (0 , username.indexOf(" ")); 
    int x = 0; 
    int y =0; 
    int z = 0; 
    while (a != -1) { 
    x++; 
    check = check.substring(a+1, check.length()); 
    a = check.indexOf(" ^^ "); } 
    while (b != -1) { 
    y++; 
    check = check.substring(b+1, check.length()); 
    b = check.indexOf(" qey "); } 
    while (c != -1) { 
    z++; 
    check = check.substring(c+1, check.length()); 
    c = check.indexOf (" $ "); } 
    if (x > 0 || y > 0 || z > 0){ 
    System.out.println (""); 
    System.out.println ("BAD"); 
     System.out.println (first); 
     System.out.println ("^^: " +x); 
     System.out.println ("qey: " +y); 
     System.out.println ("$: " +z); 

    }else { 
     System.out.println (""); 
     System.out.println ("CLEAN"); 
    } 
    } 
} 

在端部的結果是:

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -18 
at java.lang.String.substring(String.java:1967) 
at Main.main(Main.java:23) 

哪些部分我必須改變擺脫線程? 我輸入B0rg - 抵抗是徒勞的QeY哈哈哈哈$$$ ^^

,它應該顯示爲

BAD 
B0rg 
^^: 1 

qey:1 $:0

但它顯示了作爲例外。 ..請幫我...

+3

[爲什麼「有人可以幫助我?」不是一個真正的問題?](https://meta.stackoverflow.com/q/284236/5221149)--- [什麼是調試器,它如何幫助我診斷問題?](https://stackoverflow.com/q/25385173/5221149) – Andreas

+0

也許你應該在'a'循環之後執行'int b = check.indexOf(「qey」);'**,因爲'a'循環修改'check'。此外,**修復您的縮進**,因爲他們目前使代碼非常難以閱讀。 – Andreas

+0

對於它的價值,這似乎是來自AP計算機科學課程(edhesive)的任務,所以這是一個初學者問。 –

回答

0

我假設你只輸入一個單詞,因爲如果你輸入兩個,它工作正常。它失敗了,因爲它正在尋找一個子字符串,除非有兩個單詞被你的分隔符分隔,而這恰好是一個空格。

相關問題