整数を受け付ける命令文の使い方
「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プログラムの中で「左辺 = 右辺」と書いてある場合、それは「左辺という[…]
//④「今年は西暦〇〇年です」というメッセージを表示させて終了
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に詰め込まれた数字を反映した形で実現するわけです^^