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

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

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

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

Q&A

解決済

1回答

226閲覧

Java Scannerオブジェクトとnext()について

Soudaro

総合スコア7

Java

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

0グッド

0クリップ

投稿2018/06/17 09:22

前提・実現したいこと

標準入力の際にしばしば使われるScannerオブジェクトについて質問です。
Java初学者ですが、多言語の経験が少しあり、オブジェクト指向はなんとなく理解しています。

発生している問題・エラーメッセージ

「Scannerは、区切り文字によって入力をトークンに分割し、区切り文字のデフォルトは空白文字」というようなことが公式リファレンスには書いてありました。しかし、

Java

1import java.util.*; 2 3public class Main { 4 public static void main(String[] args) throws Exception { 5 // Your code here! 6 String input="28 sb32aaa ba2bs\nb32abes 2myajobs 4bsak\nhi my name is tontonchiki"; 7 Scanner sc=new Scanner(input); 8 for(int i=0;i<4;i++){ 9 System.out.println(sc.next()); 10 System.out.println("----"); 11 } 12 }

この出力が、
28

sb32aaa

ba2bs

b32abes

こうなるのが理解できません。
\nは空白文字でないので、3,4回目の出力は

28

sb32aaa

ba2bs
b32abes

2myajobs

こうなると思っていたのですが...
これは、Scannerオブジェクトが区切り文字として空白文字だけでなく改行文字も認識しているのか、Scannerオブジェクトへの入力時は空白文字で区切ったトークンが作成されているが、next()メソッドの使用時に改行文字で区切るようになっているのか...

どなたかお教え下さい。よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

『空白』ではなく『空白文字』と言っているのがミソです。
『空白文字』は普通の空白に加え、改行文字やタブ文字なども包含した表現です。

追記:
検索しても言い分けのルールの根拠が見つかりませんでしたので、一部取り消しました。

Java

1class Main { 2 public static void main(String[] args) { 3 char[] chs = {' ', '\n', '\t'}; 4 for(char ch: chs) { 5 System.out.println(Character.isWhitespace(ch)); 6 } 7 } 8}

実行結果 Wandbox

true true true

これはJavaに限った話ではないと思います。Wikipedia - Whitespace character

投稿2018/06/17 09:29

編集2018/06/17 09:49
LouiS0616

総合スコア35660

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

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

Soudaro

2018/06/17 10:50

なるほど、空白そのもの以外にも「空白文字」と認識されるものがあるんですね... 的確な回答に加え、証明のコードまで書いてくださって助かります、ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問