「int 変数名 = new java.util.Scanner(System.in).nextInt()」とは、Javaのプログラムがキーボードから入力された整数を取り込むためのコードになります。
言い換えると、ユーザーが任意の数字を入力した後にコンピュータがそれを受け付けて処理を行う時に使う命令文です。
初学者の立場ですと、「どう解読したらいいのか検討もつかない…」と困惑するかもしれませんが、初めから深追いすると挫折するリスクが高くなるので、まずは素直に「入力した数をJavaが受け付けるためのプログラムなのだ」と落とし込むようにしましょう。
この1文をまるごとセットで使い、「外部から任意の数を取り込む時はこの文をコピペして利用すれば良いのだな^^」と割り切ることが上手に付き合うコツです。
Javaはプログラミング言語の一つで、「言語」である以上、日本語と同じように使っているうちに段々と慣れていき、次第に何も考えずに適材適所で必要なコードを扱えるようになります◎
以下、簡単なプログラムを例に出しながら「int 変数名 = new java.util.Scanner(System.in).nextInt()」の使い方について解説していきます^^
整数を受け付ける命令文の使い方
「int 変数名 = new java.util.Scanner(System.in).nextInt()」は整数を受け付ける命令文である以上、何かしら「数字」を取り込んで処理を行う際に使うんだな、ということはすぐに理解できたと思います。
では、webサービス上、「整数を扱うプログラム」といったら、どんなものが思い浮かぶでしょうか?
身近なところでいけば、
年齢・生年月日・西暦・郵便番号・体重など … を求めるときに使えそうかも、と推測できますよね^^
なので、今回は「西暦」の数字を受け付けて処理をするプログラムを実際に作ってアウトプットしてみたいと思います。(※ アウトプットこそが最高のインプット!)
プログラムを書く時は、自分にとっても他人から見ても読みやすい内容にまとめるのが鉄則ですから、まずは作りたい内容を日本語化してまとめましょう。
- 画面に「今年は西暦何年ですか?」と質問を表示させる
- ユーザーが数字を入力できるようにする
- 入力された数字を用意しておいた入れ物の中へ格納する
- 「今年は西暦〇〇年です」というメッセージを表示させて終了
以上のようなプログラムを作ってみたいと思います。
では、さっそく①~④を順にコーティングしていきましょう。
//① 画面に「今年は西暦何年ですか?」と質問を表示させる System.out.print("今年は西暦何年ですか?");
はい。すでにご存知かもしれませんが、何かメッセージを表示したい場合は「System.out.print(“”);」の命令文を使い、(“”)の中に任意の文言を持たせればOKです。
そして、次の段階が今回の主役のコードになりますが、②と③のステップをまとめて扱う感じになります。
//② ユーザーが数字を入力できるようにしておき、
//③ 入力されたら用意しておいた入れ物の中に代入する
int year = new java.util.Scanner(System.in).nextInt()
まず、左辺に注目してください。「int year」として、「整数を扱うint型のyearという入れ物」を用意しました。つまり、「year」という名前の付いた箱の中へ入力された数字を代入しますよ、と定義しているのです。
反対の右辺「new java.util.Scanner(System.in).nextInt()」では、ユーザーが入力した数字を取り込むための命令文です。
左辺と右辺の間にある「=(イコール)」は、「等しい」ではなく「代入する」という意味なので、左辺の処理結果を右辺に代入するよ、という宣言文になります。
Java・PHP・Python等のプログラミング言語で使用するイコール( = )演算子は、「代入する」もしくは「格納する」という意味で使用します。 例えば、Javaプログラムの中で「左辺 = 右辺」と書いてある場合、それは「左辺という[…]
結果、これらを全部ひっくるめて実行すると、プログラムは一時的に停止状態になり、ユーザーがキーボード等を使って画面上に数字を打ち込めるようになり、入力後ENTERキーを押下すると、その数字が「year」という箱に代入されます。
そして④の段階ですが、最初に使ったSystem.out.print文を再度利用して「year」に入っている中身(入力値)を表示させます。
//④「今年は西暦〇〇年です」というメッセージを表示させて終了 System.out.print("今年は西暦" + year + "年です");
ここでは、固定文をダブルクオーテーションで囲み、「+」で各パートを繋ぎ合わせ、「year」の中身を一緒に表示させるようにしています。
コピー用にまとめたものも掲載しておきますね。↓
public class Year { public static void main(String[] args) { //①「今年は西暦何年ですか?」と質問をする System.out.print("今年は西暦何年ですか?"); //② ユーザーが数字を入力できるようにしておき、 //③ 入力されたら用意しておいた入れ物に代入する int year = new java.util.Scanner(System.in).nextInt(); //④ 「今年は西暦〇〇年です」というメッセージを表示させて終了 System.out.print("今年は西暦" + year + "年です。"); } }
そして実際にプログラムを書いて実行したイメージが以下になります。↓
画像なので伝わりづらいかもしれませんが、赤文字で示した 1~3のステップごとにコンソール上でもプログラムが一つずつ進行していく流れです。
つまり、まず「今年は西暦なんですか?」という文言が表示され、ここでいったんプログラムが一時停止して、ユーザーが数字を入力する機会が与えられます。
この段階ですでに「new java.util.Scanner(System.in).nextInt()」の処理が行われているわけです。
そして任意の数字を入れると、数字がそのまま画面上に表示されていき、ENTERボタンの押下と同時に入力値が取り込まれて「year」という器に代入されます。
最後の仕上げとして「System.out.print(“今年は西暦” + year + “です。”);」が処理され、結果「今年は西暦〇〇年です」と表示されます。
〇〇の箇所はyearに詰め込まれた数字を反映した形で実現するわけです^^
int 変数名 = new java.util.Scanner(System.in).nextInt()のまとめ
いかがだったでしょうか?
やたら長ったらしいコードのため、一単語ずつ理解しようとすると深みにハマりますが、これまで見てきたような感覚で使いながら慣れていくと、だいぶ受け入れやすくなると思います。
プログラミング言語の初学者は独学で取り組むと9割が挫折すると言われていますが、その理由は単純で「プログラミング言語を理解しようとする正しい方法がわからないから」です。
一つ一つの言葉の意味を理解するような、英単語帳を記憶する受験スタイルでは挫折率が飛躍的にアップし、自分の首を絞めるだけです。
日本語を自然にマスターしたのと同じ感覚で、とりあえず見たり聞いたりしたらアウトプットして使ってみる。使ったらどんな効果や意味があるのかを体感して、後は使うべき状況になったら、それを利用して慣れていけば良いんですね。
長いコード文をまるまる記憶する必要は全くありません。
その都度 検索をかけてコピペして利用していけばそれでOKなのです。
言い換えると、プログラミングはカンニングOK!という付き合い方が大正解ということです◎
…というわけで、今回は「キーボードから入力された整数を受け付ける」命令文について解説してきました。
もし何か他にもわからないことがありましたら、引き続きどしどしお問い合わせよりお尋ねいただければと思います^^