スキャナー(Scanner)とは?取り込み方についても Vol.35-プロショ

スポンサーリンク
スキャナー Java攻略

SoloLearnというアプリを使ってみた。

そこでは、世界中の人たちが自分で作ってみたコードを見ることができる。

多くの人が使っていたのが、この「スキャナー(Scanner)」というものだった。

 

スキャナーというのは使いやすいのかな?と思ったから、今回は「スキャナー」について学習した。

学習しないといけないこと、まだまだたくさんあるけど実践的なのも少しだけやってみたかった。

 

スポンサーリンク

スキャナーは何ができるのか

 

スキャナーを使うと何ができるのかというと、ユーザー(作られたプログラムを使う人)が入力することができるようになる。

今まで学習してきた中でユーザーができることと言えば、System.out.println();などを使って画面に表示された文字や数字を見るだけだった。
でもスキャナーを使うことで入力画面が表示されるようになり、ユーザーがキーボードで文字を入力できるようになる。

 

スキャナーを使う

 

まずキーボードで入力するプログラムを導入しないといけない。

ということで、まず「import」と入力。
スペースを空けて「java.util.Scanner;」と続ける。

import java.util.Scanner;

なんでこのコードになるかわかんないけど、とにかくスキャナーを使うときは「import java.util.Scanner;」が必要みたい。

これは、プログラムに「ユーザーがキーボードから入力できるようにするため、スキャナーが必要です」という宣言するもの。

 

ユーザーがキーボード入力できるようにするためにスキャナーが必要だとプログラムに宣言するもの。
import java.util.Scanner;

このコードはパッケージの中かつ、クラスコードの外に書かれるみたい。

パッケージの外側に書いたらエラーになっちゃった。

 

 

ということで構成はこんな感じ↓

package JavaTakusanRenshu;  ※パッケージ名はJavaTakusanRenshuで作った
import java.util.Scanner;  ※ユーザーがキーボード入力するためのコード
public class JavaScanner {  ※クラス名はJavaScannerで付けた
public static void main(String[] args) {  ※メインメソッドを書く
}
}

まだこれだけではキーボードから入力することはできない。

まだ「スキャナーが必要です!」って宣言しただけだから。

メインメソッドの中にプログラムを書かないといけない。

まず、ユーザーが入力する値(文字や数字など)を保持する変数を作らないといけない。

ユーザーが入力するものにも変数を設定しないといけないのか。

ということで、まず「Scanner」と書く。

続いて値を保持する変数の名前を付ける。
とりあえず「prosho」とでもつけておこう。

「=」で繋げて、「キーボードから入力する」という内容のプログラムを書く。
それが「new Scanner(System.in);」。

 

まとめたものが以下。

Scanner prosho = new Scanner(System.in);

これで、「prosho」という名前の入れ物にはキーボードで入力された値が入るという意味。

 

画面に表示させないと何もできないから、「System.out.println();」を使う。

()内にはまず変数名を入力⇒prosho
「.(ドット)」を続けて「nextLine()」と書く

 

「prosho.nextLine()」じゃなくて、もし「prosho」だけだったらどうなるの?と思って試してみた。

java.util.Scanner[delimiters=p{javaWhitespace}+][position=0][match valid=false][need input=false][source closed=false][skipped=false][group separator=,][decimal separator=.][positive prefix=][negative prefix=Q-E][positive suffix=][negative suffix=][NaN string=QNaNE][infinity string=Q∞E]」と表示されるだけで入力ができなかった。

ということで、「System.out.println(prosho.nextLine());」となる

nextLine()」は入力部分に入力された値は次の行に表示されるということ。

 

実際にEclipseを使って実行してみる

 

これまでのことを全部まとめたプログラムがこちら。

package JavaTakusanRenshu;
import java.util.Scanner;
public class JavaScanner { 

public static void main(String[] args) {
Scanner prosho = new Scanner(System.in);
System.out.println(prosho.nextLine());
} 

}

 

これを実行した画面がこちら。

Scannerを実行してみた画面

一見何も変わらないように見えるが、「console」の部分にカーソルを合わせると文字が打てるようになっている。

試しに「こんにちは」と打ってみた。Scannerを使ってこんにちはと打ってみた

今までは入力できなかったけど、「こんにちは」と入力できるようになった。

これでエンターを押すと、次の行に「こんにちは」と表示される。

こんにちはと入力してエンターを押す

これで「prosho」という変数には「こんにちは」が入力されたということ。

 

nextLine()の代わりにnext()を使う

 

nextLine()のほかに、next()を使うこともできる。

2つの違いは、nextLineは空白をあけても全ての文字が表示されるということ。

例えば、「こんにちは おはよう」と入力してエンターを押すと、「こんにちは おはよう」と次の行に表示される。

 

nextはこんにちは おはよう」と入力しても「こんにちは」までしか表示されない。

空白が入ると、next()はそこで切れてしまう。

これについてはまた学習を進めてまとめたい・・・。

 

ちなみに

 

文字だけじゃなくて、字も記号もなんでも入力できる。

 

でもエンターを押したら文字を変更できないみたい。
バックスペースボタンを押しても文字が消えなかった。

エンターボタンを押す前なら自由に文字を変更できるみたい。

 

プログラムを実行しなおせば、また入力スペースが空白になるから自由に文字入力できる。

 

最後に

 

以上がScannerを使ってユーザーが文字入力をできるようにする方法。

肝となるのは、まず「import java.util.Scanner;」とスキャナーを使いたいとプログラムに宣言する。
そして、メインメソッドに「Scanner prosho = new Scanner(System.in);」と「System.out.println(prosho.nextLine());」を書く。

 

これで画面表示される部分に入力ができる。

とりあえずここまで理解できたぞー。

 

 

このエントリーをはてなブックマークに追加

コメント

タイトルとURLをコピーしました