为什么我的代码在运行时会一直给我错误?它编译得很好

时间:2013-11-04 17:25:30

标签: java loops

我是java的新手,我的作业是在推文中计算#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);

 }
 }
 }

感谢任何可以提供帮助的人。

1 个答案:

答案 0 :(得分:0)

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

teet.charAt(hashnum - 1)

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