流式过滤器示例代码使用问题 导入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的示例代码 每次我试着运行这个,我总是 “用法:java twitter4j.examples.PrintFilterStream[follow(逗号分隔的数字用户ID)][track(逗号分隔的过滤项)]” 即使我添加了track array.and分隔,它也可以被拆分并添加到列表索引中 还是我不明白这个用法 感谢您的帮助流式过滤器示例代码使用问题 导入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
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"