出力の話(Java言語におけるprintln関数の話)
さて、これからプログラムの内容の説明を始めます。
この記事内でも全て、AtCoderというサイトでプログラムを実行することとします。
使い方が分からない方は、この記事を先に読んでみて下さい。
では早速、プログラミングの話をしていきましょう。
おそらくプログラミングの勉強(序盤)の流れで一番良いのは
1.プログラム(完成品)を読む
↓
2.プログラムの内容を理解する
↓
3.プログラムの一部を変更してみて、理解を確かめる&理解を深める
↓
4.上の完成品を見ながら、それに近い練習問題を解いてみる
というものだと思います。このブログでは、上の流れで勉強していけるように書こうと思います。
コードの読み方について
前回まででお話していなかったことですが、これからコードを読んでいきます。
コードの読むときの鉄則ですが、
上から順に読んでいく
というのだけ覚えていて下されば結構です。
それでは、1つ目の話題にいきましょう。
出力について
ではさっそく、上の流れにしたがって、コードを見ていきましょう。
今日初めに読むコードは以下のコードです。
import java.util.*; public class Main { public static void main(String[] args){ Scanner sc = new Scanner(System.in); System.out.println("Yeah!"); } }
前の記事でも出たプログラムですね。
まず、復習も兼ねて、このコードをAtCoderのコードテストで実行してみて下さい。標準入力の部分には何も入れなくて結構です。
結果として
Yeah!
というのが表示されたハズです。
そう、つまりこれはそういうプログラムなのです。
さて、ではこのコードをよく見ていきましょう。
とは言っても、
import java.util.*; public class Main { public static void main(String[] args){ Scanner sc = new Scanner(System.in); } }
の部分は、毎回書く、いわばテンプレートというか、そういうものだと思って無視して下さい(いつか説明します)。
つまり今回注目する部分はここです。
System.out.println("Yeah!");
ここで出てくる『System.out.println』というのは、そのあとにある()内の文を表示する、という機能を持ちます。
また、文は""で挟む、という決まりがあるので、基本的には、
System.out.println(" ここに出したい文章 ");
という形になります。
また、Java言語にいては、各命令の終わりには;(セミコロン)を付けます。これはよく忘れがちなので、注意して下さい。
例えば、上のコードを次のように変更してみるとどうなるでしょうか。
import java.util.*; public class Main { public static void main(String[] args){ Scanner sc = new Scanner(System.in); System.out.println("Good Bye!"); } }
どうなるか予想してから、AtCoderのコードテストで実行してみて下さい。
これを実行すると、『Good Bye!』と表示されるハズです。ちなみに、ちゃんとGoodとBye!の間の空白も反映されていますね。
というわけで、初めての練習問題を出します。
☆練習問題1.『Good Bye!』の代わりに『Good Night!』と出力するプログラムを、上のコードの一部を変更して、書いて下さい。また、それをAtCoder上で実行して、合っているかどうか確かめて下さい。
上のコードを、自分の文書作成ソフトにコピーアンドペーストして、それの一部を消したり、一部追加したりして解いて下さいね。
これはこのブログでの鉄則です。他人が書いたコードを改変しながら、勉強していきましょう。
また、練習問題の解答は、その記事の一番下に貼ることにします。
改行の出力について
では、さらに上のコードから色々な手を加えて、理解を深めていきましょう。
次に考えてみるのは、次のようなコードです。
import java.util.*; public class Main { public static void main(String[] args){ Scanner sc = new Scanner(System.in); System.out.println("Number1"); System.out.println("Number2"); } }
これを実行したらどうなるでしょうか。予想してから、AtCoderで実行してみて下さい。
実行すると、次のようになったハズです。
Number1 Number2
どうでしょう、予想は当たりましたか?
次のようになると予想した方もいると思います。
Number1Number2
しかしもちろん、このように2つ続けて同じ行に表示したい場合もあるハズです。
さて、改行しない場合は、次のようなコードに変更すればOKです。
import java.util.*; public class Main { public static void main(String[] args){ Scanner sc = new Scanner(System.in); System.out.print("Number1"); System.out.print("Number2"); } }
分かりにくいですが、どこを変更したか分かりますか?
変更したのは、
println
の部分ですね。
println
の場合は、「()の中を表示した後、改行をする」という命令、
の場合は、「()を中を表示して、改行はしない」という命令になります。
この改行は便利そうですね。
では、次のように、1行目に"one"、2行目には何も書かずに、3行目に"three"と書くにはどうしたらよいでしょうか。
つまり、こういう文を出力したいです。
one three
考えてみてください。
これが2つ目の練習問題です。
☆練習問題2.下のような文を(改行も再現して)出力するプログラムを書き、AtCoderで実行して合っているか確かめて下さい。
one three
※ヒント:2行目は「何もない」が出力されている、ととれますね。
はい、今回の内容は以上です。
この下に、練習問題に対する解答例を書いておきます。
基本的にAtCoderで実行したら合っているかどうか自分で確かめられますが、興味のある方はご覧下さい。
また、間違い等を見つけられた方は、是非ともコメント等で教えて下さい。よろしくお願いします。
練習問題の解答例
練習問題1.
import java.util.*; public class Main { public static void main(String[] args){ Scanner sc = new Scanner(System.in); System.out.println("Good Night!"); } }
練習問題2.
import java.util.*; public class Main { public static void main(String[] args){ Scanner sc = new Scanner(System.in); System.out.println("one"); System.out.println(""); System.out.println("three"); } }