-2

我是 Java 新手,我有一个任务是计算推文中的 #s、@s 和链接。所以我写了这个程序,编译器没有看到任何错误,但是当我运行它并输入推文时,它会给我错误。

 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 quantity = tweet.length();
      System.out.println(tweet);
      if (quantity > 140)
      {
        System.out.println("Excess Characters: " + (quantity - 140));
      }
      else{
        System.out.println("Length Correct");
        int hashtags=0;
        int v=0;
        if (tweet.charAt(0)=='#'){
        hashtags++;
        v++;
        }
        String teet=tweet;
          while (hashtags != v-1){
          v++; 
          int hashnum= teet.indexOf('#');
          if ((teet.indexOf('#')!=-1) && (teet.charAt(hashnum + 1)!=(' ')) && (teet.charAt(hashnum-1)==(' '))) {
             hashtags++;
          }
          if (teet.indexOf('#')!=-1) {
          teet=teet.substring((hashnum+1),(quantity));
               }
          }
        System.out.println("Number of Hashtags: " + hashtags);
        int ats=0;
        int w=0;
        if (tweet.charAt(0)=='@'){
          ats++;
          w++;
        }
        String tweat=tweet;
        while (ats != w-1){
          w++;
          int atnum= tweat.indexOf('@');
          if ((tweat.indexOf('@')!=-1) && (tweat.charAt(atnum + 1) !=(' ')) && (tweat.charAt(atnum-1)==(' '))) {
            ats++;
          }
          if (tweat.indexOf('@')!=-1) {
          tweat=tweat.substring((atnum+1),(quantity));
          }
        }
        System.out.println("Number of Attributions: " + ats);

 }
 }
 }

感谢任何能提供帮助的人。

4

1 回答 1

0

String.indexOf(String) 方法将为第一个字符返回 0。异常被抛出:

teet.charAt(hashnum - 1)

因为 hashnum 为 0,所以你正在做的是“#hi”.charAt(-1)。

于 2013-11-04T17:35:03.433 回答