ホーム
Java
その他
こんなサイト腐るほどあるのになんでうちに来たの?
来たからには、ちゃんとJavaをマスターしてもらうからね。 
2018/01/20

第4回 変数とか演算子とか使って計算なんかしちゃおう


はいどーもー、おとふとでぇーーーすwwwwww

今日は、前回作ったHelloWorldにプログラムを書き足していこうと思いまーす。

で、何を書き足すかってぇと、タイトルに書いてある変数とか演算子ってのを使った計算式だ。
算数ができれば誰でも扱える、簡単で基本的なことだから、さっさと覚えてしまおう。


まずは、下の文を見てくれ。

int i = 10;
i = i + 5;
System.out.println(i);


前回、System.out.println()でデータを表示できると言ったな?
ここでは、"i"というのが表示されるわけだが、この"i"が変数だ。
変数というのは、値を入れる箱のようなものだと、よく説明されている。

まず、int i = 10;という文で、整数の値を入れるためのiという名前の変数に、10という整数を入れている。
専門用語を使うと、「int型の変数iを10で初期化する」と言う。
とりあえず覚えておいてくれ。

次に、i = i + 5;という文で、変数iに、i+5を代入している。
プログラミングで=の記号は、数学のイコールとは意味が違って、左辺に右辺の値を代入するってことなんだわ。
だから、この場合i = 10 + 5ってことになるから、iの中身は15になる。

で、最後にSystem.out.println(i);で、iの値である15をコンソール画面に表示するわけだ。


さあ、変数の使い方についてはこれでわかったと思うが、続いて変数の作り方だ。
変数を作ることを、宣言すると言うんだ。
コンピュータに対して、「今からこの変数を使いますよー」って、宣言するんだ。
宣言の方法は、"型 変数名;"と書くこと。
そしてついでに、型 変数名 = 値;で初期化する。
この「型」というのは、いろんなものがあるんだが。
まず変数というのは、入れることができる値がきまっているんだ。
今回の場合なら、intという型を使っている。
"int"というのは、英語の「整数」という意味の"Integer"からとっている。
"int i;"と書くことで、iは整数型の変数として宣言することができる。

ほかにもよく使う型をいくつか紹介するから覚えておいて欲しい。
書くのは面倒だから下のリンクから確認しておいてくれ。
基本のデータ型 - 変数とデータ型 - Java入門 (JavaDrive)


で、次に演算子のお勉強だ。
演算子ってのは、計算式に使う記号のことだ。
+ - * / = < > これらがそうで、組み合わせて使うこともある。
+と-は見たまんま、足し算と引き算だ。
掛け算では*(アスタリスク)を使って、割り算では/(スラッシュを使う。
=はいろいろな記号と組み合わせて使うことができる。例えば、
i += 5;と書くと、iに5を足したものをiに代入するということになる。
つまり、i = i + 5;とは、i += 5;と書くことが出来る。
- * / も同様だ。
他に、不等号とも組み合わせることができる。
例えば、>=と書くと、≧と同じ意味になる。
だから、System.out.println(1 >= 2);って書くと、コンソールにはfalseと表示される。

じゃあ、長々と説明していてもつまらないだろうし、ちょっと実用的なアプリをひとつ作ってみようか。
どこで使うかわからないけど、円の直径を入力してもらって、面積を求めて出力するアプリだ。
とりあえず、こう書いてくれ。

import java.io.*;

class HelloWorld{

tab public static void main(String[] args) throws IOException{

tab tab String str = new BufferedReader(new InputStreamReader(System.in)).readLine();
tab }
}


こうすると、文字列型の変数strに、ユーザーから入力してもらった文字列が代入される。
これはあまり使うことないから覚えなくていい。

しかし、計算をするわけだから数字を入力してもらいたい。
こういう時は、こうする。

import java.io.*;

class HelloWorld{

tab public static void main(String[] args) throws IOException{

tab tab System.out.println("円の直径を整数で入力してください。");
tab tab String str = new BufferedReader(new InputStreamReader(System.in)).readLine();
tab tab int i = Integer.parseInt(str);
tab }
}


まず、コンソールに「整数で入力してください」というメッセージを表示して、入力を行ってもらう。
そして、入力された文字列strを、整数型のint iに変換する。
例えばユーザーが"10"と入力したとしても、"10"という文字列として入力されてしまう(仕様)なので、自分で整数に変換してやる必要がある。
このとき使う変換器が、Integer.parseInt()ってやつだ。
int i = Integer.parseInt(str);と書いてやることで、文字列のstrを整数に変換してiを初期化することができる。

次は計算だ。
ゆとり世代は円周率を3と習ったらしいが、俺の世代は3.14と習ったから、3.14で計算する。
つまり、小数をつかうわけだから、小数の型であるdoubleを使う必要がある。
円の面積は、半径×半径×πだから、
double hankei = (double)i / 2;と書いてまずは半径を求めてやる。
んで、
double menseki = hankei * hankei * 3.14;で面積を求める。
ここで重要になってくるのが、型キャストというやつだ。
なぜかというと、整数を割り算した答えは整数になってしまうからだ。
どういうことかというと、例えばプログラム中で7 / 2をすると、答えは3になってしまう。
どうすれば解決できるかってぇと、7.0 / 2をするんだ。
7.0という小数を2で割ると、答えも小数の3.5になる。
8.0を2で割っても、4.0になる。

じゃあどうやって整数を小数に変換するのかってぇと、それが型キャストってやつで、(double)iって書くとiをintからdoubleに変換できるんだけど、説明めんどくさいから下のリンクから勉強して。
型キャスト | Javaコード入門

ってわけで、最後にSystemout.println("面積は" + menseki + "です。");と書けば完成ですわ。

import java.io.*;

class HelloWorld{

tab public static void main(String[] args) throws IOException{

tab tab System.out.println("円の直径を整数で入力してください。");
tab tab String str = new BufferedReader(new InputStreamReader(System.in)).readLine();
tab tab int i = Integer.parseInt(str);
tab tab double hankei = (double)i / 2;
tab tab double menseki = hankei * hankei * 3.14;
tab tab System.out.println("面積は" + menseki + "です。");
tab }
}


じゃあこれを自分でHelloWorld.javaに書いて、コンパイルして実行してみて。


......
ちゃんと動いた?

そうだ、今回は見やすいように何行にも分けて書いたけど、実際はこれ1行の文でできちゃうから。

import java.io.*;

class HelloWorld{

tab public static void main(String[] args) throws IOException{

tab tab System.out.println(Math.pow(Double.parseDouble(new BufferedReader(new InputStreamReader(System.in)).readLine()) / 2, 2) * 3.14);
tab }
}


こんな感じ。
でも、読みにくくなるからなるべく分けて書こう。


さぁ~て、次回のJava講座は??

・条件分岐
・繰返し文
の2本でお送りしまぁ~すwwwwwww
じゃんっけんっぽん!
結果を見る