現在做我的AP計算機科學家庭作業,但我堅持運行時錯誤。有人知道我的代碼有什麼問題嗎? 程序工作正常上Dr.Java但它顯示了在edhesive我的網站上測試運行時錯誤...爲什麼我得到運行時錯誤:StringIndexOutOfBounds?
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 hash = 0;
int attr = 0;
int link = 0;
int ch = 0;
if(tweet.length()>140)
{
System.out.println("Excess Characters: " + (tweet.length() - 140));
}
else
{
tweet=tweet.toLowerCase();
System.out.println("Length Correct");
for(ch=0; ch<tweet.length(); ch++)
{
if(tweet.charAt(ch) == '#' && ((ch++)<=(tweet.length())) && (tweet.charAt(ch++)!=' ' && tweet.charAt(ch++)!='\t'))
{
hash++;
}
if(tweet.charAt(ch) == '@' && ((ch++)<=(tweet.length())) && (tweet.charAt(ch++)!=' ' && tweet.charAt(ch++)!='\t'))
{
attr++;
}
if(tweet.charAt(ch) == 'h' && ((ch + 7)<=(tweet.length())))
{
String a = new String("http://");
String sub = new String(tweet.substring(ch, ch + 7));
if (sub.equals(a))
{link++;}
}
}
System.out.println("Number of Hashtags: " + hash);
System.out.println("Number of Attributions: " + attr);
System.out.println("Number of Links: " + link);
}
}
}
什麼布爾函數'(ch ++)<=(tweet.length())'當tweet只包含'#','@'或'h'時返回?接下來的檢查 - tweet。 charAt(ch ++)!=''' - 會拋出接收到的異常。'tweet.charAt(ch ++)'拋出異常。 –
什麼樣的輸入String得到運行時錯誤?能否告訴我更多細節?運行你r程序,這是工作。也許IDE問題... – Alice
@Alice嘗試運行程序,只輸入'#'或'@'。 –