SoloLearnというアプリを使ってみた。
そこでは、世界中の人たちが自分で作ってみたコードを見ることができる。
多くの人が使っていたのが、この「スキャナー(Scanner)」というものだった。
スキャナーというのは使いやすいのかな?と思ったから、今回は「スキャナー」について学習した。
学習しないといけないこと、まだまだたくさんあるけど実践的なのも少しだけやってみたかった。
スキャナーは何ができるのか
スキャナーを使うと何ができるのかというと、ユーザー(作られたプログラムを使う人)が入力することができるようになる。
今まで学習してきた中でユーザーができることと言えば、System.out.println();などを使って画面に表示された文字や数字を見るだけだった。
でもスキャナーを使うことで入力画面が表示されるようになり、ユーザーがキーボードで文字を入力できるようになる。
スキャナーを使う
まずキーボードで入力するプログラムを導入しないといけない。
ということで、まず「import」と入力。
スペースを空けて「java.util.Scanner;」と続ける。
import java.util.Scanner;
なんでこのコードになるかわかんないけど、とにかくスキャナーを使うときは「import java.util.Scanner;」が必要みたい。
これは、プログラムに「ユーザーがキーボードから入力できるようにするため、スキャナーが必要です」という宣言するもの。
import java.util.Scanner;
このコードはパッケージの中かつ、クラスコードの外に書かれるみたい。
パッケージの外側に書いたらエラーになっちゃった。
ということで構成はこんな感じ↓
import java.util.Scanner; ※ユーザーがキーボード入力するためのコード
public class JavaScanner { ※クラス名はJavaScannerで付けた
public static void main(String[] args) { ※メインメソッドを書く
}
}
まだこれだけではキーボードから入力することはできない。
まだ「スキャナーが必要です!」って宣言しただけだから。
メインメソッドの中にプログラムを書かないといけない。
メインメソッドについてはこちらを参照:Javaプログラミングのクラスとメインメソッドの説明が初心者には分かりづらい件
まず、ユーザーが入力する値(文字や数字など)を保持する変数を作らないといけない。
ユーザーが入力するものにも変数を設定しないといけないのか。
ということで、まず「Scanner」と書く。
続いて値を保持する変数の名前を付ける。
とりあえず「prosho」とでもつけておこう。
「=」で繋げて、「キーボードから入力する」という内容のプログラムを書く。
それが「new Scanner(System.in);」。
まとめたものが以下。
これで、「prosho」という名前の入れ物にはキーボードで入力された値が入るという意味。
画面に表示させないと何もできないから、「System.out.println();」を使う。
「prosho.nextLine()」じゃなくて、もし「prosho」だけだったらどうなるの?と思って試してみた。
ということで、「System.out.println(prosho.nextLine());」となる
「nextLine()」は入力部分に入力された値は次の行に表示されるということ。
実際にEclipseを使って実行してみる
これまでのことを全部まとめたプログラムがこちら。
import java.util.Scanner;
public class JavaScanner {
public static void main(String[] args) {
Scanner prosho = new Scanner(System.in);
System.out.println(prosho.nextLine());
}
}
これを実行した画面がこちら。
一見何も変わらないように見えるが、「console」の部分にカーソルを合わせると文字が打てるようになっている。
試しに「こんにちは」と打ってみた。
今までは入力できなかったけど、「こんにちは」と入力できるようになった。
これでエンターを押すと、次の行に「こんにちは」と表示される。
これで「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());」を書く。
これで画面表示される部分に入力ができる。
とりあえずここまで理解できたぞー。
コメント