[解決済み] javaで平均値を計算する
2022-03-15 02:27:38
質問
EDIT: 平均値のためのコードを書きましたが、どのようにすれば
int
を、私の
args.length
を配列ではなく
計算できるjavaプログラムを書きたいのですが。
- 読み込んだ整数の個数
- 平均値 - 整数である必要はない!
注意: 配列から平均値を計算したいのではなく、配列の中の整数を計算したいのです。
args
.
現在、私はこのように書いています。
int count = 0;
for (int i = 0; i<args.length -1; ++i)
count++;
System.out.println(count);
}
int nums[] = new int[] { 23, 1, 5, 78, 22, 4};
double result = 0; //average will have decimal point
for(int i=0; i < nums.length; i++){
result += nums[i];
}
System.out.println(result/count)
どなたか正しい方向に導いてください。または、このコードを形成するための正しい方法で私を導く例を与える?
よろしくお願いします。
どのように解決するのですか?
あなたのコードを少し修正するだけです(わかりやすくするために変数名を変えています)。
double sum = 0; //average will have decimal point
for(int i=0; i < args.length; i++){
//parse string to double, note that this might fail if you encounter a non-numeric string
//Note that we could also do Integer.valueOf( args[i] ) but this is more flexible
sum += Double.valueOf( args[i] );
}
double average = sum/args.length;
System.out.println(average );
なお、ループは簡略化することも可能です。
for(String arg : args){
sum += Double.valueOf( arg );
}
編集: OP は
args
の配列があります。これは文字列配列のようなので、それに合わせて回答を更新しました。
更新情報 :
zoxqojが正しく指摘しているように、上記のコードでは整数/倍数のオーバーフローはケアされていません。入力値は十分に小さいのでこの問題はないと思いますが、本当に大きな入力値の場合に使用するスニペットを以下に示します。
BigDecimal sum = BigDecimal.ZERO;
for(String arg : args){
sum = sum.add( new BigDecimal( arg ) );
}
この方法にはいくつかの利点があります(多少遅くなるので、タイムクリティカルな操作には使わないでください)。
- 精度が保たれる。doubleでは、計算回数が増えるにつれて精度が徐々に落ちていく(数字によっては正確な精度が得られないこともある)。
-
オーバーフローの可能性はほとんどありません。ただし
BigDecimal
に収まるサイズより大きいかもしれません。double
またはlong
.
関連
-
Android Studio 3.1.2 で v4, v7 パッケージが見つからない シンボル 'AppCompatActivity' を解決できない
-
Java(1)仕上げの基本概念+eclipseのインストール構成
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] JavaでNullPointerExceptionを回避する方法
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Java Mapの各エントリを効率的に反復処理するには?
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] JavaでArrayListではなくLinkedListを使用するのはいつですか?
-
[解決済み] JavaでStringをintに変換するにはどうしたらいいですか?
-
[解決済み] 整数の平方根が整数であるかどうかを判断する最速の方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
eclipse で「アクセス制限: タイプ 'HttpServer' は API ではありません」というプロンプトが表示される。
-
Javaクラスローダーにソースコードから潜り込む
-
this()の呼び出しはコンストラクタ本体の最初の文でなければならない 例外解決と原因分析
-
サーブレットクラスのインスタンス化エラーの解決法
-
アイデア Springboot Web プロジェクトを jar にパッケージ化する場合、Error: 無効または破損した jarfile x.jar 解決策
-
[オリジナル】java学習ノート【II】よくあるエラー クラスパス上のクラスファイルが見つからない、またはアクセスできない場合
-
org.glassfish.jersey.servlet.ServletContainer
-
このラインで複数のマーカーを解決する方法
-
テストが見つかりませんでした
-
ローカルリソースのロードが許可されていない場合の解決策