Twitterの検索機能を使い、複数のツイートを取得し、その中から目的のツイートを選ぶというプログラムを書いてます。
1回目に呼び出したScannerで検索するワードを入力、2回目に呼び出したScannerで検索結果の中からツイートを番号で選ぶといった形にしたいのですが、Scannerの使い方がわからないため、エラーを出してしまいます。
どうしたらよいでしょうか?
java
1public static void main(String[] args) { 2 try { 3 ConfigurationBuilder cb = new ConfigurationBuilder(); 4 cb.setDebugEnabled(true) 5 .setOAuthConsumerKey(ConsumerKey) 6 .setOAuthConsumerSecret(ConsumerSecret) 7 .setOAuthAccessToken(AccessToken) 8 .setOAuthAccessTokenSecret(AccessTokenSecret); 9 TwitterFactory tf = new TwitterFactory(cb.build()); 10 Twitter twitter = tf.getInstance(); 11 User user = twitter.verifyCredentials(); 12 13 Scanner textScanner = new Scanner(System.in); 14 System.out.println("調べたいツイートを検索します。最初の10文字を入力してください"); 15 String inputText = textScanner.nextLine(); 16 17 Query query = new Query("from:" + user.getScreenName()); 18 QueryResult result = twitter.search(query); 19 20 for (Status status : result.getTweets()) { 21 if (status.getText().equals(inputText)) { 22 tweetList.add(status.getText()); 23 for(int i = 0; i < tweetList.size(); i++) { 24 System.out.println(i + "."+ tweetList.get(i)); 25 } 26 } 27 } 28 textScanner.close(); 29 30 System.out.println("一致するツイートの番号を入力してください"); 31 Scanner indexScanner = new Scanner(System.in); 32 int index = indexScanner.nextInt(); 33 System.out.println(tweetList.get(index)); 34 indexScanner.close(); 35 36 37 } catch (TwitterException e) { 38 System.out.println("エラー"); 39 } 40 }
実行結果は以下のようになっています。
調べたいツイートを検索します。最初の10文字を入力してください
眠い
0.眠い
一致するツイートの番号を入力してください
Exception in thread "main" java.util.NoSuchElementException
at java.base/java.util.Scanner.throwFor(Scanner.java:937)
at java.base/java.util.Scanner.next(Scanner.java:1594)
at java.base/java.util.Scanner.nextInt(Scanner.java:2258)
at java.base/java.util.Scanner.nextInt(Scanner.java:2212)
at getTweets.CollectTweets.main(CollectTweets.java:54)
理想として以下のような結果が得られればと思います。
調べたいツイートを検索します。最初の10文字を入力してください
眠い
0.眠い
一致するツイートの番号を入力してください
0
眠い
回答1件
あなたの回答
tips
プレビュー