我是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);
}
}
}
感谢任何可以提供帮助的人。
答案 0 :(得分:0)
String.indexOf(String)方法将为第一个字符返回0。 抛出异常:
teet.charAt(hashnum - 1)
因为hashnum是0,你所做的是“#hi”.charAt(-1)。