流式过滤器示例代码使用问题 导入twitter4j.FilterQuery; 导入twitter4j.StallWarning; 导入twitter4j.状态; 导入twitter4j.StatusDeletionNotice; 导入twitter4j.StatusListener; 导入twitter4j.TwitterException; 导入twitter4j.TwitterFactory; 导入twitter4j.TwitterStream; 导入twitter4j.TwitterStreamFactory; 导入twitter4j.conf.ConfigurationBuilder; 导入java.util.ArrayList; 导入java.util.array; 公开课获胜{ 公共静态配置生成器cb; 公共静态推特; 公共静态twitter4j.Twitter-tw; 公共静态void main(字符串[]args)引发TwitterException{ ConfigurationBuilder cb=新的ConfigurationBuilder(); cb.setDebugEnabled(true) .setOAuthConsumerKey(“”) .SetOAuthConsumerCret(“”) .setOAuthAccessToken(“-”) .setOAuthAccessTokenSecret(“”); tf=新的TwitterFactory(cb.build()); tw=tf.getInstance(); 如果(参数长度>1){ System.out.println(“用法:javatwitter4j.examples.PrintFilterStream[follow(逗号分隔的数字用户ID)][track(逗号分隔的过滤项)]”; 系统退出(-1); } StatusListener=新建StatusListener(){ @凌驾 公共无效状态(状态){ System.out.println(“@”+status.getUser().getScreenName()+”-“+status.getText()); } @凌驾 删除通知的公共作废(状态删除通知状态删除通知){ System.out.println(“获得状态删除通知id:+statusDeletionNotice.getStatusId()); } @凌驾 公开无效onTrackLimitationNotice(int NumberOfLimitedStatus){ System.out.println(“获得跟踪限制通知:+numberoflimitedstatus”); } @凌驾 onScrubGeo上的公共无效(长用户ID、长状态ID){ System.out.println(“Get-scrub\u geo事件用户ID:+userId+”upToStatusId:+upToStatusId”); } @凌驾 安装警告(安装警告)中的公共无效{ System.out.println(“得到失速警告:+警告”); } @凌驾 公共无效OneException(例外情况除外){ 例如printStackTrace(); } }; TwitterStream TwitterStream=新建TwitterStreamFactory().getInstance(); twitterStream.addListener(listener); ArrayList follow=新的ArrayList(); ArrayList轨迹=新的ArrayList(); for(字符串arg:args){ if(isNumericalArgument(arg)){ 对于(字符串id:arg.split(“,”)){ follow.add(Long.parseLong(id)); } }否则{ track.addAll(Arrays.asList(arg.split(“,”)); } } long[]followArray=新的long[follow.size()]; 对于(int i=0;i

流式过滤器示例代码使用问题 导入twitter4j.FilterQuery; 导入twitter4j.StallWarning; 导入twitter4j.状态; 导入twitter4j.StatusDeletionNotice; 导入twitter4j.StatusListener; 导入twitter4j.TwitterException; 导入twitter4j.TwitterFactory; 导入twitter4j.TwitterStream; 导入twitter4j.TwitterStreamFactory; 导入twitter4j.conf.ConfigurationBuilder; 导入java.util.ArrayList; 导入java.util.array; 公开课获胜{ 公共静态配置生成器cb; 公共静态推特; 公共静态twitter4j.Twitter-tw; 公共静态void main(字符串[]args)引发TwitterException{ ConfigurationBuilder cb=新的ConfigurationBuilder(); cb.setDebugEnabled(true) .setOAuthConsumerKey(“”) .SetOAuthConsumerCret(“”) .setOAuthAccessToken(“-”) .setOAuthAccessTokenSecret(“”); tf=新的TwitterFactory(cb.build()); tw=tf.getInstance(); 如果(参数长度>1){ System.out.println(“用法:javatwitter4j.examples.PrintFilterStream[follow(逗号分隔的数字用户ID)][track(逗号分隔的过滤项)]”; 系统退出(-1); } StatusListener=新建StatusListener(){ @凌驾 公共无效状态(状态){ System.out.println(“@”+status.getUser().getScreenName()+”-“+status.getText()); } @凌驾 删除通知的公共作废(状态删除通知状态删除通知){ System.out.println(“获得状态删除通知id:+statusDeletionNotice.getStatusId()); } @凌驾 公开无效onTrackLimitationNotice(int NumberOfLimitedStatus){ System.out.println(“获得跟踪限制通知:+numberoflimitedstatus”); } @凌驾 onScrubGeo上的公共无效(长用户ID、长状态ID){ System.out.println(“Get-scrub\u geo事件用户ID:+userId+”upToStatusId:+upToStatusId”); } @凌驾 安装警告(安装警告)中的公共无效{ System.out.println(“得到失速警告:+警告”); } @凌驾 公共无效OneException(例外情况除外){ 例如printStackTrace(); } }; TwitterStream TwitterStream=新建TwitterStreamFactory().getInstance(); twitterStream.addListener(listener); ArrayList follow=新的ArrayList(); ArrayList轨迹=新的ArrayList(); for(字符串arg:args){ if(isNumericalArgument(arg)){ 对于(字符串id:arg.split(“,”)){ follow.add(Long.parseLong(id)); } }否则{ track.addAll(Arrays.asList(arg.split(“,”)); } } long[]followArray=新的long[follow.size()]; 对于(int i=0;i,java,twitter4j,Java,Twitter4j,这是来自twitter4j的示例代码 每次我试着运行这个,我总是 “用法:java twitter4j.examples.PrintFilterStream[follow(逗号分隔的数字用户ID)][track(逗号分隔的过滤项)]” 即使我添加了track array.and分隔,它也可以被拆分并添加到列表索引中 还是我不明白这个用法 感谢您的帮助 import twitter4j.FilterQuery; import twitter4j.StallWarning; import twitt

这是来自twitter4j的示例代码

每次我试着运行这个,我总是

“用法:java twitter4j.examples.PrintFilterStream[follow(逗号分隔的数字用户ID)][track(逗号分隔的过滤项)]”

即使我添加了track array.and分隔,它也可以被拆分并添加到列表索引中

还是我不明白这个用法

感谢您的帮助

import twitter4j.FilterQuery;
import twitter4j.StallWarning;
import twitter4j.Status;
import twitter4j.StatusDeletionNotice;
import twitter4j.StatusListener;
import twitter4j.TwitterException;
import twitter4j.TwitterFactory;
import twitter4j.TwitterStream;
import twitter4j.TwitterStreamFactory;
import twitter4j.conf.ConfigurationBuilder;

import java.util.ArrayList;
import java.util.Arrays;


public class winning {

    public static ConfigurationBuilder cb;
    public static TwitterFactory tf;
    public static twitter4j.Twitter tw;


    public static void main(String[] args) throws TwitterException {   

        ConfigurationBuilder cb = new ConfigurationBuilder();
        cb.setDebugEnabled(true)
            .setOAuthConsumerKey("")
            .setOAuthConsumerSecret("")
            .setOAuthAccessToken("-")
            .setOAuthAccessTokenSecret("");        

         tf= new TwitterFactory(cb.build());
         tw= tf.getInstance();       


        if (args.length > 1) {
            System.out.println("Usage: java twitter4j.examples.PrintFilterStream [follow(comma separated numerical user ids)] [track(comma separated filter terms)]");
            System.exit(-1);
        }

        StatusListener listener = new StatusListener() {
            @Override
            public void onStatus(Status status) {
                System.out.println("@" + status.getUser().getScreenName() + " - " + status.getText());
            }

            @Override
            public void onDeletionNotice(StatusDeletionNotice statusDeletionNotice) {
                System.out.println("Got a status deletion notice id:" + statusDeletionNotice.getStatusId());
            }

            @Override
            public void onTrackLimitationNotice(int numberOfLimitedStatuses) {
                System.out.println("Got track limitation notice:" + numberOfLimitedStatuses);
            }

            @Override
            public void onScrubGeo(long userId, long upToStatusId) {
                System.out.println("Got scrub_geo event userId:" + userId + " upToStatusId:" + upToStatusId);
            }

            @Override
            public void onStallWarning(StallWarning warning) {
                System.out.println("Got stall warning:" + warning);
            }

            @Override
            public void onException(Exception ex) {
                ex.printStackTrace();
            }
        };

        TwitterStream twitterStream = new TwitterStreamFactory().getInstance();
        twitterStream.addListener(listener);
        ArrayList<Long> follow = new ArrayList<Long>();
        ArrayList<String> track = new ArrayList<String>();
        for (String arg : args) {
            if (isNumericalArgument(arg)) {
                for (String id : arg.split(",")) {
                    follow.add(Long.parseLong(id));
                }
            } else {
                track.addAll(Arrays.asList(arg.split(",")));
            }
        }
        long[] followArray = new long[follow.size()];
        for (int i = 0; i < follow.size(); i++) {
            followArray[i] = follow.get(i);
        }
        String[] trackArray = track.toArray(new String[track.size()]);

        // filter() method internally creates a thread which manipulates TwitterStream and calls these adequate listener methods continuously.
        twitterStream.filter(new FilterQuery(0, followArray, trackArray));
    }

    private static boolean isNumericalArgument(String argument) {
        String args[] = argument.split(",");
        boolean isNumericalArgument = true;
        for (String arg : args) {
            try {
                Integer.parseInt(arg);
            } catch (NumberFormatException nfe) {
                isNumericalArgument = false;
                break;
            }
        }
        return isNumericalArgument;
    }   
}
winning
class(请遵循命名约定,并以大写字母开头类名),接受命令行参数作为字符串数组
String[]args

public static void main(String[] args)
您有上面的代码,这一条件显然是正确的,因为您提到在输出和程序出口中看到sysout“用法:java twitter4j.examples.PrintFilterStream[follow(逗号分隔的数字用户ID)][track(逗号分隔的过滤项)]”

因此,您必须确保只传递一个参数作为程序的输入,因此args.length只保留1

查看您的代码,您稍后将使用args将其拆分为。 因此,您对程序的输入必须如下所示

“1,2,3,4,5,6”

“a、b、c、d、e、f”

从命令行调用的程序应类似于:

if (args.length > 1) {
供您参考和学习

java winning "1,2,3,4,5,6"