计数变量不起作用

时间:2014-02-23 23:50:12

标签: java loops arraylist iterator

我正在编写一个程序来接受推文作为输入,并返回推文中使用的唯一主题标签的值。但是在countUniqueHashtags方法中,如果输入包含主题标签(即使有多个),我的hashtagCount变量将只返回值1,如果输入不包含任何主题标签,则返回值0。

public class UniqueHashtagCounter 
{

static ArrayList<String> uniqueHashTags = new ArrayList<String>();

int numberOfTweetsToFollow;
public String tweetSpace = "";
Scanner in = new Scanner(System.in);

    public int getTweetsToFollow() 
        {
        System.out.println("Enter the number of Tweets you wish to follow: ");
        numberOfTweetsToFollow = in.nextInt();
        return numberOfTweetsToFollow;
        }

    public String tweetsInput()
    {
        for(int i = 0; i <= numberOfTweetsToFollow ; ++i)
        {
            if(in.hasNextLine()){
                tweetSpace = tweetSpace + in.nextLine();
            }   
        }
            return tweetSpace;
    }

    public ArrayList<String> populateArray()
    {
        uniqueHashTags.add(tweetSpace);
        for(String s: uniqueHashTags)
            s.toLowerCase().split(" ");
        for(int x = 0; x < uniqueHashTags.size(); x++){
        countUniqueHashtags(uniqueHashTags);}
        return uniqueHashTags;
    }

    static void countUniqueHashtags(ArrayList<String> strings)
    {
        int hashtagCount = uniqueHashTags.size();
        ListIterator<String> listIterator = strings.listIterator();
        while(listIterator.hasNext())
            {
                String e = listIterator.next();
                if(e.startsWith("#"))
                    hashtagCount = hashtagCount + 1;
            }
        System.out.println("The number of unique hashtags is: " + hashtagCount);
    }

1 个答案:

答案 0 :(得分:1)

“如果输入包含主题标签(即使有多个标签),我的hashtagCount变量将只返回值1,如果输入不包含任何主题标签,则返回值0”

那是因为您使用的是startsWith()

if(e.startsWith("#"))
hashtagCount = hashtagCount + 1;

您需要遍历字符串并计算主题标签字符:

for(int i=0; e.length();i++){
   if(e.charAt(i)=='#') hashtagcount++;
}