質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

3回答

1289閲覧

javaの数値比較の方法について

qkazooing

総合スコア22

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2019/01/08 04:58

編集2019/01/08 05:10

数字を入力していきそれがすべて同じ数値で一致するかを行いたいのですが少しつまづいており二つ質問があります。

一つ目
例えば1 1 1と入力ならtrueですが1 2 1と入力ならfalseです
ここで配列で考えた場合、
a[i]に1 1 1の時はa[0]とa[1]が一致→a[1]とa[2]が一致→よってtrue
a[i]に1 2 1の時はa[0]とa[1]が不一致→よってfalse
としたいのですが問題があります。
まず配列の比較としてArrays.equals(a,a1)のように二つの配列の比較は知っているのですが一つの配列でひとつづつ要素を比較するにはa[0] == a[1]ではできないと思うのですがどのように比較していけばいいですか?

二つ目
1 1.3 3の入力の際、配列がint型とdouble型が必要になると思うのですがこの場合はどのように比較すればよいのでしょうか?

そもそも配列以外で数値比較する方法があれば教えてください。ちなみにほかのクラスで入力された数値をこのクラスで一つずつ受け取って比較しています。

編集
1 2 1のときa[0]とa[2]と書きましたがa[0]とa[1]の書き間違えでした

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

一つの配列でひとつづつ要素を比較するにはa[0] == a[1]ではできないと思うのですがどのように比較していけばいいですか?

ものすごくシンプルな方法で良いなら、次のように考えれば良いのです。

Java

1int val = 配列の先頭の値; 2boolean all_same = true; 3 4for(int i = 1; i < 配列の要素数; ++i) { 5 if(val != i番目の要素) { 6 all_same = false; 7 break; 8 } 9}

staticメソッドとして定義すればフラグも必要なく、もっとすっきりとしたコードが書けます。

Java

1static boolean all_same(int[] arr) { 2 要素が全て同じかどうかを返す 3}

また、集合を利用しても良いでしょう。

1 1.3 3の入力の際、配列がint型とdouble型が必要になると思うのですがこの場合はどのように比較すればよいのでしょうか?

intとdoubleを混ぜるのではなく、最初からdoubleの配列として持てば良いです。
ただし浮動小数の比較には若干の配慮が要ります。

投稿2019/01/08 05:05

編集2019/01/08 05:06
LouiS0616

総合スコア35660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

qkazooing

2019/01/08 05:17

配列の要素数なのですが他クラスで入力されるためいくつ来るかが分からない状態なのですがこの場合どう対処すれば良いのでしょうか?
azuapricot

2019/01/08 05:27

横から失礼します。 配列の用素数=数をべた書きではなくて、 配列の長さを書けっていうことなのでは?  配列.length  などを使えば長さ指定せずとも配列の長さの分だけ for文は回せますよ
LouiS0616

2019/01/08 05:27

配列変数.length で取得できると思いますよ。
qkazooing

2019/01/08 07:40

ありがとうございます
guest

0

a[0]==a[1] && a[0]==a[2]

で。

二つ目
(double)a==(double)b && (double)a==(double)c

では

# 意味不明だったので書き直しw

投稿2019/01/08 05:04

編集2019/01/08 05:15
y_waiwai

総合スコア87774

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

int[] の場合、 double[] の場合、 String[] の場合、 Object[] の場合の
メソッドを作ってみました。

int と double が混ざった数値は、 double[], String[], Object[] のいずれかの配列にしてやり、比較すればよいです。

java

1public class Example2XX { 2 3 final static double DELTA = 0.0001; 4 5 public static boolean isAllEqual(int[] a) { 6 for (int i = 1; i < a.length; i++) { 7 if (a[0] != a[i]) { 8 return false; 9 } 10 } 11 return true; 12 } 13 14 public static boolean isAllEqual(double[] a) { 15 for (int i = 1; i < a.length; i++) { 16 if (Math.abs(a[0] - a[i]) > DELTA) { 17 return false; 18 } 19 } 20 return true; 21 } 22 23 public static boolean isAllEqual(String[] a) { 24 for (int i = 1; i < a.length; i++) { 25 if (! a[0].equals(a[i])) { 26 return false; 27 } 28 } 29 return true; 30 } 31 32 public static boolean isAllEqual(Object[] a) { 33 for (int i = 1; i < a.length; i++) { 34 if (! a[0].toString().equals(a[i].toString())) { 35 return false; 36 } 37 } 38 return true; 39 } 40 41 public static void main(String[] args) { 42 System.out.println(isAllEqual(new int[] { 1, 1, 1 })); 43 System.out.println(isAllEqual(new int[] { 1, 2, 1 })); 44 System.out.println(); 45 46 System.out.println(isAllEqual(new String[] { "1", "1", "1" })); 47 System.out.println(isAllEqual(new String[] { "1", "1.3", "1" })); 48 System.out.println(); 49 50 System.out.println(isAllEqual(new double[] { 1.3, 1.3, 1.3 })); 51 System.out.println(isAllEqual(new double[] { 1, 1.3, 1 })); 52 System.out.println(); 53 54 System.out.println(isAllEqual(new Object[] { Double.valueOf(1.3), Double.valueOf(1.3), "1.3" })); 55 System.out.println(isAllEqual(new Object[] { Integer.valueOf(1), Double.valueOf(1.3), "1" })); 56 System.out.println(); 57 } 58}

参考情報

  • java: array if all the same

https://stackoverflow.com/questions/4448698

  • Correct way to compare floats or doubles in Java

https://howtodoinjava.com/java/basics/correctly-compare-float-double/

  • Comparing doubles in Java gives odd results

https://stackoverflow.com/questions/5230642/comparing-doubles-in-java-gives-odd-results

  • double型のアサーションにおける罠

https://dev.classmethod.jp/testing/unittesting/trap-when-double-value-assertion/

投稿2019/01/09 21:47

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問