質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

解決済

1回答

8962閲覧

Scannerで複数回入力をしたい

nasu_nasu

総合スコア7

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

0クリップ

投稿2020/07/25 07:35

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
眠い

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TN8001

2020/07/25 10:33

System.inでnewしたScannerは、closeせずにそのまま使い続けてください。
nasu_nasu

2020/07/25 14:35

closeせずに使い続けたら理想通りの結果が得られました。 ご回答いただきありがとうございました!
TN8001

2020/07/25 20:57

お手数ですが自己回答で解決済にしてください。
guest

回答1

0

自己解決

教えていただいた通り、Scannerをcloseせずに使用したところ、理想通りの結果が得られました。
回答いただいた方、ありがとうございました。

投稿2020/07/27 02:04

nasu_nasu

総合スコア7

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問