ここから本文です

Javaの問題なんですけどキーボードから整数の(0~100)を入力し、終わった時点で、そ...

ftg********さん

2019/6/718:01:26

Javaの問題なんですけどキーボードから整数の(0~100)を入力し、終わった時点で、それらの最大値、最小値、平均を表示させるプログラムなんですけど、integer.MAX_VALUEを使わずにする方法ってあ

りますか?

閲覧数:
51
回答数:
3

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

ikt********さん

2019/6/822:42:27

いったい何を見て Integer.MAX_VALUE の話になったのか
わかりかねますが、
・最大・最小・平均
を求めるときに、MAX_VALUE など使わずともできます。
というか、個人的にはこういう
・マジックナンバー
を使うやり方は、好きではありません。

class Foo1 {
    public static void main(String[] args) {
        Integer min=null, max=null, sum=null;
        for (var arg : args) {
            int n = Integer.parseInt(arg);
            if (min == null)
                min = max = sum = n;
            else {
                min = Math.min(min, n);
                max = Math.max(max, n);
                sum += n;
            }
        }
        if (min != null)
            System.out.printf("min=%s, max=%s, average=%s%n", min, max, (double)sum / args.length);
    }
}

実行結果:
C:\tmp>javac -encoding utf-8 Foo1.java

C:\tmp>java Foo1 -10
min=-10, max=-10, average=-10.0

C:\tmp>java Foo1 -10 10
min=-10, max=10, average=0.0

C:\tmp>java Foo1 -10 10 5
min=-10, max=10, average=1.6666666666666667

C:\tmp>java Foo1 1 2 3 4 5 6 7 8 9 10
min=1, max=10, average=5.5

  • ikt********さん

    2019/6/822:46:40

    別解。

    勉強目的・自力コードでやれ、ってことなんでしょうけど、
    結果を得たいだけなら標準ライブラリ使うだけで可。

    import java.util.stream.Stream;

    class Foo2 {
        public static void main(String[] args) {
            System.out.println(
                Stream.of(args).mapToInt(Integer::parseInt).summaryStatistics()
            );
        }
    }


    C:\u\tmp>javac -encoding utf-8 Foo2.java

    C:\tmp>java Foo2 -10
    IntSummaryStatistics{count=1, sum=-10, min=-10, average=-10.000000, max=-10}

    C:\tmp>java Foo2 -10 10
    IntSummaryStatistics{count=2, sum=0, min=-10, average=0.000000, max=10}

    C:\tmp>java Foo2 -10 10 5
    IntSummaryStatistics{count=3, sum=5, min=-10, average=1.666667, max=10}

    C:\tmp>java Foo2 1 2 3 4 5 6 7 8 9 10
    IntSummaryStatistics{count=10, sum=55, min=1, average=5.500000, max=10}

  • その他の返信(3件)を表示

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜2件/2件中

並び替え:回答日時の
新しい順
|古い順

プロフィール画像

カテゴリマスター

ama********さん

2019/6/720:15:22

>integer.MAX_VALUEを使わずにする方法ってありますか?

出来るでしょうが、プログラムとしてスマートではないですし、デメリットしかないですが?

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

プロフィール画像

カテゴリマスター

aki********さん

2019/6/718:05:04

1番普通の方法で、それぞれを個別の変数に記録して、更新してゆけばよいです。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる