ゼロからプログラミングコンテスト!

プログラミング経験ゼロから、プログラミングコンテストに挑戦できるよう、応援するブログです。実践が一番!

出力の話(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

の場合は、「()の中を表示した後、改行をする」という命令、

print

の場合は、「()を中を表示して、改行はしない」という命令になります。


この改行は便利そうですね。
では、次のように、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");
	}
}