2014年01月12日
JavaEEの前に復習をしてみる その4 変数同士の計算をしてみる。
変数同士の計算を、Javaで行ってみたいと思います。
初歩の初歩から、技術を思い出すために書き連ねていきます。
まだ、Java触ったことのない人は、過去記事のEclipseのインストールから行っていくと、
shadeの独学レベルまでは、たどり着けるかもしれません。そして、そのままGOLDとっちゃってくださいw
でも、めんどくさくなって、どーーん!!と話がぶっ飛ぶことこともお許しくださいw
int型の、num1とnum2を使って計算をします。
int num1 = 5;
int num2 = 6;
と、2つの値を宣言しておきます。
そして、この2つを使って四則演算をします。
まず、加算。
System. out.println ( "num1+num2=" +num1+num2+ "です。" );
これで、どんな結果が返ると思いますか?
5+6だから、11!
ではなくて、
num1+num2=56です。
となります。
これは、初歩的な罠です。
プログラムに慣れてくれば、当たり前じゃん!という内容なんですけどね。
こう、書くとどうでしょう。
System. out .println ( num1+num2 +"です。" );
これだと、
11です。
となります。
これは、
"num1+num2=" +num1+num2+ "です。"
"num1+num2=" と "です。"が、文字列です。
num1と、num2は数値型です。
文字列と数値は直接足すことができないので、一番左にある文字列が優先され処理されます。
そしてプログラムは左側から優先的に処理されるので、
"num1+num2=" + 5 = "num1+num2=5"
"num1+num2=5" + 6 = "num1+num2=56"
"num1+num2=56" + "です。" = "num1+num2=56です。"
となってしまうわけです。
System. out .println ( num1+num2 +"です。" );
こちらの場合は、一番左が数値型で、次も数値型なので、数値同士の計算が先にされて、
最後に文字列がくっつく形になるので、正しい計算がされ、11と返されるわけです。
num1+num2=11です。と表示したければ、
System. out .println ( "num1+num2=" +(num1+num2)+ "です。" );
と、このように、数値型同士をかっこで括って優先的に処理してしまえばOKです。
実は、こういうのがJava SE Silverの問題に出てきて、結果は以下のうちどれでしょう。
といった感じで、11だったり、56だったりの中から答えを選ばせる問題が出ます。
四則演算をまとめて行うと、
public class Rensyu {
public static void main (String [] args){
int num1 = 5;
int num2 = 6;
System. out.println ( "num1+num2=" +(num1+num2)+"です。" );
System. out.println ( "num1-num2=" +(num1-num2)+"です。" );
System. out.println ( "num1*num2=" +(num1*num2)+"です。" );
System. out.println ( "num1/num2=" +(num1/num2)+"です。" );
}
}
もちろん、実際のプログラムでこんな書き型したら怒られますが、最初なので、こんな感じで。
結果は、
num1+num2=11です。
num1-num2=-1です。
num1*num2=30です。
num1/num2=0です。
と、なります。除算が0と表示されたのは、num1とnum2が整数型だからです。
整数型は小数点以下の数値を表示することはありません。
小数点以下を表示するのであれば、intではなく、float型を使うといいです。
今回も手抜きで書いてしまいますが、
public class Rensyu {
public static void main (String [] args){
float num1 = 5;
float num2 = 6;
System. out .println ( "num1+num2=" +(num1+num2)+ "です。" );
System. out .println ( "num1-num2=" +(num1-num2)+ "です。" );
System. out .println ( "num1*num2=" +(num1*num2)+ "です。" );
System. out .println ( "num1/num2=" +(num1/num2)+ "です。" );
}
}
こうすることで、以下のように表示することができます。
num1+num2=11.0です。
num1-num2=-1.0です。
num1*num2=30.0です。
num1/num2=0.8333333です。
もちろん、除算だけfloatの結果を返すような表記もできます。
しかし、長くなってきてしまったので、それはおいおい普通に書かれていると思いますw
初歩の初歩から、技術を思い出すために書き連ねていきます。
まだ、Java触ったことのない人は、過去記事のEclipseのインストールから行っていくと、
shadeの独学レベルまでは、たどり着けるかもしれません。そして、そのままGOLDとっちゃってくださいw
でも、めんどくさくなって、どーーん!!と話がぶっ飛ぶことこともお許しくださいw
int型の、num1とnum2を使って計算をします。
int num1 = 5;
int num2 = 6;
と、2つの値を宣言しておきます。
そして、この2つを使って四則演算をします。
まず、加算。
System. out.println ( "num1+num2=" +num1+num2+ "です。" );
これで、どんな結果が返ると思いますか?
5+6だから、11!
ではなくて、
num1+num2=56です。
となります。
これは、初歩的な罠です。
プログラムに慣れてくれば、当たり前じゃん!という内容なんですけどね。
こう、書くとどうでしょう。
System. out .println ( num1+num2 +"です。" );
これだと、
11です。
となります。
これは、
"num1+num2=" +num1+num2+ "です。"
"num1+num2=" と "です。"が、文字列です。
num1と、num2は数値型です。
文字列と数値は直接足すことができないので、一番左にある文字列が優先され処理されます。
そしてプログラムは左側から優先的に処理されるので、
"num1+num2=" + 5 = "num1+num2=5"
"num1+num2=5" + 6 = "num1+num2=56"
"num1+num2=56" + "です。" = "num1+num2=56です。"
となってしまうわけです。
System. out .println ( num1+num2 +"です。" );
こちらの場合は、一番左が数値型で、次も数値型なので、数値同士の計算が先にされて、
最後に文字列がくっつく形になるので、正しい計算がされ、11と返されるわけです。
num1+num2=11です。と表示したければ、
System. out .println ( "num1+num2=" +(num1+num2)+ "です。" );
と、このように、数値型同士をかっこで括って優先的に処理してしまえばOKです。
実は、こういうのがJava SE Silverの問題に出てきて、結果は以下のうちどれでしょう。
といった感じで、11だったり、56だったりの中から答えを選ばせる問題が出ます。
四則演算をまとめて行うと、
public class Rensyu {
public static void main (String [] args){
int num1 = 5;
int num2 = 6;
System. out.println ( "num1+num2=" +(num1+num2)+"です。" );
System. out.println ( "num1-num2=" +(num1-num2)+"です。" );
System. out.println ( "num1*num2=" +(num1*num2)+"です。" );
System. out.println ( "num1/num2=" +(num1/num2)+"です。" );
}
}
もちろん、実際のプログラムでこんな書き型したら怒られますが、最初なので、こんな感じで。
結果は、
num1+num2=11です。
num1-num2=-1です。
num1*num2=30です。
num1/num2=0です。
と、なります。除算が0と表示されたのは、num1とnum2が整数型だからです。
整数型は小数点以下の数値を表示することはありません。
小数点以下を表示するのであれば、intではなく、float型を使うといいです。
今回も手抜きで書いてしまいますが、
public class Rensyu {
public static void main (String [] args){
float num1 = 5;
float num2 = 6;
System. out .println ( "num1+num2=" +(num1+num2)+ "です。" );
System. out .println ( "num1-num2=" +(num1-num2)+ "です。" );
System. out .println ( "num1*num2=" +(num1*num2)+ "です。" );
System. out .println ( "num1/num2=" +(num1/num2)+ "です。" );
}
}
こうすることで、以下のように表示することができます。
num1+num2=11.0です。
num1-num2=-1.0です。
num1*num2=30.0です。
num1/num2=0.8333333です。
もちろん、除算だけfloatの結果を返すような表記もできます。
しかし、長くなってきてしまったので、それはおいおい普通に書かれていると思いますw