簡體   English   中英

為什么程序會拋出這個錯誤??:線程“main”中的異常java.lang.StringIndexOutOfBoundsException:字符串索引超出范圍:36

[英]Why is the program throwing this error??: Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 36

在本作業中,您將編寫一個推文測試器。 Twitter 允許用戶發送不超過 140 個字符的消息。 用戶使用@mentions 將推文定向到特定用戶,並使用#hashtags 標記推文。 用戶還可以“轉推”來自其他用戶的推文。 在本實驗中,您將要求用戶輸入一條潛在的推文。 首先,您將通過檢查長度是否小於或等於 140 個字符來檢查它是否是有效推文。 如果推文太長,打印出超過140個字符數。如果推文有效,打印長度正確,然后計算@mentions和#hashtags的數量,並使用以下規則確定推文是否為轉推:每一次提及都會以 '@' 字符開頭,后面至少有一個非空格或非制表符。 所有主題標簽都以“#”字符開頭,並且后面至少有一個非空格或非制表符。 如果推文在推文文本的任何位置包含字符串“RT:”,則該推文是轉推。 Twitter 忽略大小寫,因此“RT:”、“rt:”和任何其他可能的大寫字母都被視為同一組字符,並且都表示轉發。 您不需要檢查“RT:”字符串后面的任何字符。 請記住,轉義序列 '\\t' 可用於檢查制表符。 示例運行 1:請輸入一條推文:RT:這是一條 #long 推文。 一個超長的#link。 因此,當@you 編寫代碼時,它應該忽略所有#hashtags 和@mentions,因為它們太長了。 它還應該忽略轉推字符串。 多余字符:50 個樣本運行 2:請輸入一條推文:這個 #tweet 是 #short 並且有幾個 #hashtags。 RT:這是一個轉推。 長度 正確 提及次數:0 主題標簽數:3 輸入是轉推。 示例運行 2:請輸入推文:此 @tweet 是 #short 並且具有 #hashtags 和 @mentions # 長度 正確的提及次數:2 主題標簽數:2 輸入不是轉推。

import java.util.Scanner;
import java.lang.Math;

public class Main{
    public static void main(String[] args)
     {
      Scanner scan = new Scanner (System.in);
      int h = 0;
      int m = 0;
      int count = 0; 
      char letter;
      boolean r = false;
      String tweet;
      System.out.println("Please enter a tweet:");
      tweet = scan.nextLine();
      int length = tweet.length();

      if (length <= 140)
      {
          while (count <= length)
          {
            letter = tweet.charAt(count);

            if (letter == '#' &&
                tweet.charAt(letter+1) != ' ')
            {
                h++;
            }

            if (letter == '@' &&
                tweet.charAt(letter+1) != ' ')
            {
                m++;
            }

            if ((letter == 'r' || letter == 'R') &&
            (tweet.charAt(letter + 1) == 't' || tweet.charAt(letter + 1) == 'T'))
            {
                r = true;
            }

            count ++;

          }

          System.out.println("Length Correct");
          System.out.println("Number of Mentions: " + (m));
          System.out.println("Number of Hashtags: " + (h));
          if (r == true)
          {
            System.out.println("The input was a retweet.");
          }
          else if (r==false)
          {
            System.out.println("The input was not a retweet.");
          }
      }

       if (length > 140)
       {
        System.out.println("Excess Characters: " + (length - 140));
       }


     }
}

下面是問題的原因。

while (count <= length) {

下面是修復

while (count < length) {

暫無
暫無

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

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