アフィリエイト広告を利用しています


スキル無しのシステムインストラクターから、システムエンジニアへの転身日記。
◇◆◇ 2013年取得資格
LPICレベル1
LPICレベル2
LPICレベル3 Core
LPICレベル3 Speciality 302
LPICレベル3 Speciality 303
LPICレベル3 Speciality 304

Cisco CCENT
Cisco CCNA

Java SE 7 Silver
Java SE 7 GOLD

OSS-DB Silver

◇◆◇ 2014年取得資格
HTML5 Professional レベル1

広告

posted by fanblog

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

トラックバック

この記事へのトラックバックURL
※ブログオーナーが承認したトラックバックのみ表示されます。
https://fanblogs.jp/tb/2006065

コメント

お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのコメント

はびさん

こんばんはー。
そうですね。周囲の人が読むことを意識して書くことが大事です。
Javaの経験者が資格を取るケースより、Javaの登竜門として資格勉強する人のほうが割合としては多そうですからね。
こういうのは大事だよ。暗黙のルールだよ。というのが試験問題になっているかもしれませんね。

たしかに、実際に小数点をつかうなら、はびさんのように記載するのが普通かもしれませんね。
Javaは大丈夫なんじゃないかと思ってます。一応、ここに書いているソースは、コンパイルまではしてあります。
プログラマの方は、言語をいくつも操れて凄いと思ってます。Javaだけでも、全然覚えきれないのにw
shade |2014年01月17日(Fri) 23:38
Shade さん

こんばんはっ Habitat ですっ

演算に左方優先の法則があるんですね

組む側の人間からすると、他の人が見て混乱しないように、括弧書きするか処理を分けるなどして、
そういうコードにしないんですが、資格試験となるとあえてそういう意識外のことをあえて定義するんでしょうね

このシリーズはみるだけでもおさらいになるのですごくいいです
また見にこよっ

ちなみに、私の場合は
float num1 = 5;
float num2 = 6;
はあえて、見た人に浮動小数点計算を意識させるために
float num1 = 5.0;
float num2 = 6.0;
とかにしたりします
たしか、言語によっては float/single とかの初期化では
入力値が整数値だとコンパイルエラー起こすんですよ・・
(Javaがどうなのかは知らないで書いてるのでご勘弁)
Habitat |2014年01月16日(Thu) 00:29
×

この広告は30日以上新しい記事の更新がないブログに表示されております。

Build a Mobile Site
スマートフォン版を閲覧 | PC版を閲覧
Share by: