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

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

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

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

Q&A

解決済

5回答

10055閲覧

Java 標準入力から空白で区切られた数値をリストに格納する方法

Alter_9524

総合スコア22

Java

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

0グッド

0クリップ

投稿2018/10/16 01:53

入力された値、例えば、

[入力] 20 30 40 50

のように空白で区切られた値をリストに格納する方法を教えていただけませんか?

[試したコード] import java.util.*; public class Main { public static void main(String[] args) throws Exception { //スキャナーで数値を取得 Scanner sc = new Scanner(System.in); int line = sc.nextInt(); System.out.println(line); } }
[出力] 20

結果的に最初に一つだけしか受け取れない現状です。

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

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

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

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

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

guest

回答5

0

java

1List<Integer> list = new ArrayList<>(); 2try (Scanner sc = new Scanner(System.in)) { 3 sc.forEachRemaining(s -> list.add(Integer.valueOf(s))); 4}

投稿2018/10/16 02:29

swordone

総合スコア20651

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

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

0

文字列の妥当性チェックをせずに変換するだけであれば、

java

1Arrays.stream(input.split(" ")) 2 .map(val -> Integer.parseInt(val)) 3 .collect(Collectors.toList());

投稿2018/10/16 02:22

A-pZ

総合スコア12011

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

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

0

自己解決

[コード] Scanner sc = new Scanner(System.in); String line = sc.nextLine(); String[] data = line.split(" ");

一度、文字列として取り込んだあとにsplitを使って空白ごとにリストに格納ができました。

ここからさらに数値化させる方法を考えます。

投稿2018/10/16 02:11

Alter_9524

総合スコア22

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

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

0

  1. 空のリストを作り、
  2. Scanner#hasNext の結果が真である間ループし、
  3. Scanner#nextInt で値を取得し、
  4. リストに放り込んでいけば良いです。

投稿2018/10/16 01:58

編集2018/10/16 02:00
LouiS0616

総合スコア35660

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

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

Alter_9524

2018/10/16 02:37

int count = 0; int[] line = new int[2]; while(sc.hasNext()){ int i = sc.nextInt(); line[count] = i; count++; } hasNext()を使うことで一度String型を経由することなく数値データを配列にいれることができました。 ありがとうございます。
guest

0

Scannerは空白や改行などの区切り文字に沿って分割して取得するので、
whileループを使うことで解決できます。
ループしてないので、最初の1つしか取れてないのが現状ですね。
java scanner 空白区切りなどで検索するとサンプルが出てくると思います。

投稿2018/10/16 01:56

dice142

総合スコア5158

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問