2019.08.04

値の比較

値を比較するとは

値の比較は、与えられた2つの値abを比較し、abが同じであるか、abよりも大きいか、abよりも小さいかを判定するものです。

値を比較する演算子

比較は、関係演算子という記号を使って行います。比較した結果はtrueまたはfalseになります。

意味 演算子 使用例 使用例の結果
より大きい >(半角) ( a > b ) aがbより大きければ→true
以下であれば→false 
以上 >=(半角) ( a >= b ) aがb以上であれば→true
小さければ→false 
より小さい <(半角) ( a < b ) aがbより小さければ→true
以上であれば→false
以下 <=(半角) ( a <= b ) aがb以下であれば→true
大きければ→false
等しい ==(半角) ( a == b ) aとbが等しければ→true
等しくなければ→false
等しくない !=(半角) ( a != b ) aとbが等しくなければ→true
等しければ→false

比較演算子の使い方

値を比較した結果は、boolea型の変数に代入するか、if文条件式for文while文do~while文継続条件式として使います。

変数の代入に使う

	boolean a = 条件式

if文で条件式を使う

	if ( 条件式 ) {
		処理文1
		処理文2
		  :
	}
	if ( 条件式 ) 
		処理文

for文で条件式を使う

    for ( 初期化式; 継続条件式; 変化式 ) {
        処理文1;
        処理文2;
           :
    }

while文で条件式を使う

	while ( 継続条件式 ) {
		処理文1
		処理文2
		   :
	}

do~while文で条件式を使う

	do {
	    処理文1
	    処理文2
	       :
	while ( 継続条件式 );

ここでの注意点は、double型float型の浮動小数点数の2つの値が等しいかを判定する場合、計算したときの誤差の影響で正確に判定できないことです。

誤差についての詳細は、class="wordlink" href="double-error.html">「double型のもつ誤差」を参考にしてください。

double型のもつ誤差について解説しています。

2016.02.15

それでは、2つの値の比較を行うJavaソースコードで確認を行いたいと思います。以下の3つのJavaソースコードは、2つの値を比較するものです。

1つ目のソースコードは、int型変数の値を比較するものです。

CompareValue1.java

001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
public class CompareValue1 {
	public static void main( String[] args ) {
		int a, b;

		// aとbの比較
		a = 10;
		b = 14;

		if ( a == b )
			System.out.println( a + "と" + b + "は等しい" );
		else {
			if ( a > b )
				System.out.println( a + "は" + b + "より大きい" );
			else
				System.out.println( a + "は" + b + "より小さい" );
		}
	}
}

コンパイル ソースコードが「ANSI」の場合

C:\talavax\javasample>javac -encoding sjis CompareValue1.java

コンパイル ソースコードが「UTF-8」の場合

C:\talavax\javasample>javac CompareValue1.java

実行

C:\talavax\javasample>java CompareValue1
10は14より小さい

正しい比較結果が出力されています。

2つ目のソースコードは、float型変数の値を比較するものです。比較する2つの変数には割り算を行った結果を代入していいます。

CompareValue2.java

001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
public class CompareValue2 {
	public static void main( String[] args ) {
		float a, b;

		// aとbの比較
		a = 25.0f / 0.3f;		
		b = 250.0f / 3.0f;		

		if ( a == b )
			System.out.println( a + "と" + b + "は等しい" );
		else {
			if ( a > b )
				System.out.println( a + "は" + b + "より大きい" );
			else
				System.out.println( a + "は" + b + "より小さい" );
		}
	}
}

コンパイル ソースコードが「ANSI」の場合

C:\talavax\javasample>javac -encoding sjis CompareValue2.java

コンパイル ソースコードが「UTF-8」の場合

C:\talavax\javasample>javac CompareValue2.java

実行

C:\talavax\javasample>java CompareValue2

実行結果

83.33333は83.333336より小さい

2つの変数に同じ計算結果が代入されるようにしていますが、計算誤差により2つの計算結果が等しいと判定されていません。

3つ目のソースコードは、float型変数の値を比較するものです。2つ目のソースコードとの違いはfloat型の計算誤差を考慮していることです。float型epsにゼロに近い値を代入し、2つ値の差の絶対値eps未満であれば等しいと判定するようにしています。

CompareValue3.java

001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
public class CompareValue3 {
	public static void main( String[] args ) {
		float a, b;
		float eps = 0.0001f; // 0に近い値

		// aとbの比較
		a = 25.0f / 0.3f;		
		b = 250.0f / 3.0f;		

		// 同じ値か比較(aとbの差が0に近いか)
		if ( eps > Math.abs( a - b ) )
			System.out.println( a + "と" + b + "は等しい" );
		else {
			if ( a > b )
				System.out.println( a + "は" + b + "より大きい" );
			else
				System.out.println( a + "は" + b + "より小さい" );
		}
	}
}

コンパイル ソースコードが「ANSI」の場合

C:\talavax\javasample>javac -encoding sjis CompareValue3.java

コンパイル ソースコードが「UTF-8」の場合

C:\talavax\javasample>javac CompareValue3.java

実行

C:\talavax\javasample>java CompareValue3

実行結果

83.33333と83.333336は等しい

2つの値が同じと判定されています。

以上です。

関連コンテンツ

プログラミングで使う変数って何?

2020.03.23

変数やクラスに格納されている値をコンソール出力する方法は?

2020.03.23

double型のもつ誤差について解説しています。

2016.02.15

条件式を判断して処理を分岐する方法を詳しく説明しています。

2023.03.20

処理を繰り返すために使用するfor文について解説しています。

2020.03.23

処理を繰り返すために使用するwhile文について解説しています。

2016.01.26

基本的な計算である足し算(加法)/引き算(減法)/掛け算(乗法)/割り算(除法)を行うプログラム作成。

2020.03.23

プログラムの最初に実行されるメソッドは?

2022.12.13

Javaのプログラムを書いてみませんか?プログラムの書き方をくわしく説明しています。

2020.03.23

「Javaソースコード」から実行可能な「オブジェクトコード」に変換する方法をくわしく説明しています。

2020.03.23

Javaのプログラムを作ってみませんか?プログラミングに必要なものの用意から実行までを説明しています。

2020.03.23

Javaの学習に役立つソースコードを多数紹介しています。是非、ご覧ください。

2022.09.10

Swingパッケージを使ってグラフィック表示を行う方法を解説しています。

2020.03.23

画像フォーマット形式・色・大きさ・傾きなどの変更、特定の図形(文字・記号など)を見つけたり、取り出したりする画像処理について詳しく解説。

2015.11.29

繰り返し処理を使ったJavaのソースコードサンプルを紹介しています。

2020.03.23

配列を使うJavaソースコードを多数紹介しています。

2021.05.18

数学に関係するJavaのメソッドやソースコードなどを紹介しています。

2022.10.25

三角形、台形、円などいろいろな図形の面積を計算するプログラムを紹介しています。詳しくは、記事をご覧ください。

2021.05.18

StringクラスとStringBuilderクラスを利用したプログラミングの仕方を紹介しています。

2016.12.16

Javaを使った簡単な応用プログラム(生年月日から年齢を計算プログラムなど)を紹介しています。

2022.07.07

プログラミング、ITに関する用語をまとめています。

2022.10.17

日本で使われてきた伝統文様「和柄」について解説しています。

2022.07.27

処理を繰り返すために使用するdo~while文について解説しています。

2016.02.26

Javaプログラムの構成について解説しています。詳しくは、こちらをご覧ください。

2020.03.23

プログラミング言語とは?種類や特徴について説明しています。

2022.08.03

Javaの演算子'/'を使って割り算を行った結果と注意点などについて説明。

2020.03.23

絶対値の意味と、Math.absメソッドの使い方をソースコードを使って詳しく解説しています。

2020.03.23

「ゆるゆるプログラム」のコンテンツを紹介しています。興味のある方はこの記事をご覧ください。

2020.03.23

広告