我正在编写一个基本代码,用于检查推文是否包含主题标签或提及,如果其中包含空格或制表符,则不会计算。我也得到一个“未公开的字符文字”信息,我不知道为什么。
for (int i=0; i < tweet.length(); i++) {
char currentchar = tweet.charAt(i);
char nextcar = tweet.charAt(i+1);
if (currentchar == '#') {
if (! (nextcar == ' ') && ! (nextcar == '/t')) {
numofhashtags++;
}
}
if (currentchar == '@') {
if ((nextcar != ' ') && (nextcar != '/t')) {
numofmentions++;
}
}
}
答案 0 :(得分:0)
首先,当您发布代码时,请发布推文的字符串值。
您的代码中的问题是:
for (int i=0; i < tweet.length(); i++) {
char currentchar = tweet.charAt(i);
char nextcar = tweet.charAt(i+1);//<-- here
现在让我们假设字符串长度是3。
您开始计算从第0个位置到第3个位置的字符串。执行i+1
时,您尝试访问不存在的字符串的第4个索引。
同时使用"\t"
检查标签"/t"
如何更改循环的可能方法是:
for (int i=1; i <tweet.length(); i++) {//change i=1 and condition to <=
char currentchar = tweet.charAt(i-1);//since we are already accessing from the next character you will you have scan the previous character for current character by doing i-1
char nextcar = tweet.charAt(i);// you will already have next character access so no need of i+1
答案 1 :(得分:0)
以此格式制作for-loop
:
for (int i=0; i < tweet.length()-1; i++)