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

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

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

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

Q&A

2回答

1148閲覧

java プログラム解説してほしい

退会済みユーザー

退会済みユーザー

総合スコア0

Java

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

0グッド

0クリップ

投稿2019/01/27 05:33

//配列に入れる int [] num =new int[input]; //合計と平均を求める for(int x=0;x<input;x++){ System.out.println((x+1)+"つ目の整数"); num[x]=Integer.parseInt(br.readLine()); sum+=num[x]; } ave=sum/input;

⓵配列の解説とどういう動きをするのか
⓶なぜ合計は{}の中で計算し、平均は外で計算しているのか

上記二点が気になります。

どなたか教えていただけますでしょうか。

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

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

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

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

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

guest

回答2

0

  1. このコード断片を見る限りでは必ずしも配列は必要ではありません.

なぜあるのか, どうつかう(つもりだった)のかは, 作者さんに聞いてください.

  1. 平均はどうやって出しますか? 合計を件数で割るものと考えます.

合計はいつ出来ますか? for{} の中で合計を加算していっているので for{} が終わった後です.
なので外で出します.

投稿2019/01/27 05:55

jimbe

総合スコア12632

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

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

jimbe

2019/01/27 07:38

このコード断片は https://teratail.com/questions/170981 の rink さんの回答からでしたか. でしたら回答にコメントの形でご質問されたほうが良かったのではと思いますが. rink さんのコードでは, 提示された断片の処理の後, 入力した値から平均以上の値を抽出して表示しています. そのため, 入力した値を保存しておく必要があり, num配列に入れています.
guest

0

要点: 全体像を眺めてみてください。

//合計と平均を求める

とありますね。

合計と平均を割り出したい。そういうことです。

で、平均はどうやって出しますか?

私の言葉で書くと

平均 = 総計 / 個数

だった気がします。

例えば、

{ 3, 3, 4, 5, 8, 9, 1, 2 }

という8つの数字の平均を割り出すときは、

ave = (3 + 3 + 4 + 5 + 8 + 9 + 1 + 2) / 8

となり、ave = 4.375 となりますね。( あ、計算苦手なので計算ミスしているなら読み替えてください... )

平均の値はともかく、計算方法は人間が解く場合はこういう風にしますね。

で、総計を出す場合は単純に

Java

1int arr[] = ...; // すでに入っているとして.インスタンス化も行われているとする 2int sum = 0; // 0 で初期化しておく 3 4sum = arr[0] + arr[1] + arr[2] + arr[3] + ... arr[7]; // 4~6は省略しているので読み替えて!

みたいにできますが、これは配列の数がコーディング時にわかっている場合。

例えばCSVファイルとかのようなファイルから存在するデータを引き抜いて配列に格納して計算...とかみたいに上限がわからない場合がある。

またはCでいう関数化, Javaでいうメソッド化しておいて汎用性を持たせて、Cでいうqsort関数みたいにするような場合は毎回作らないといけない。

でも書き方を変えると汎用性を持たせることも可能。

Java

1// int arr[8] があるとして。 2int sum = 0; 3 4sum += arr[0]; 5sum += arr[1]; 6sum += arr[2]; 7... 8sum += arr[7];

とすることも可能ですね。

簡単に言えば、

ave = (3 + 3 + 4 + 5 + 8 + 9 + 1 + 2) / 8

を一個ずつ計算している感じ。

でもよく見ると、常に sum += arr[~]; が同じで、"~"が数字であり、0~7でやっている。

だからforでループさせながら配列内のデータを追加していっている。

で、平均は総計が完全に求まらないとできない。よってforから抜けたときに行う。

流れを矢印やフローチャートなんかで記述して全体像を読んでみてください。

投稿2019/02/03 01:41

BeatStar

総合スコア4958

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問