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

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

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

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

Q&A

解決済

3回答

4480閲覧

【Java】配列変数の最大値、最小値、中央値を求めたい

退会済みユーザー

退会済みユーザー

総合スコア0

Java

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

0グッド

1クリップ

投稿2021/10/14 01:02

編集2021/10/18 01:59
  1. 実現したいこと

整数型の配列変数dataを作成し、以下の条件のとおりの初期値を入れるものとする。

大きさは、10
値は、1から10の乱数
このとき、実行例のように、値をすべて表示し、その中の最大値と最小値と平均値を表示するようにしなさい。

実行結果の例
10 6 2 4 3 5 9 9 1 3

最大値 : 10
最小値 : 1
平均値 : 5

2.現在のプログラム

package Problem5; public class Priblem5_6 { public static void main(String[] args){ int date[] = new int[10]; for(int i = 0;i < date.length; i++){ date[i] = (int)(Math.random()*10)+1; System.out.print(date[i] + " "); } int max = date[0]; int min = date[0]; for(int i=1; i < date.length; i++){ if(date[i] > max){ max = date[i]; } if(date[i] < min){ min = date[i]; } } System.out.println(); System.out.println("最大値 :"+ max); System.out.println("最小値 :" + min); } double [] d = new double[10]; int sum; double avg; sum = 0; for(int i = 0; i < date.length; i++){ sum = sum + i; } avg= sum / 10.0; System.out.println("平均値 :" + avg); } }

現在のエラーメッセージ

Exception in thread "main" java.lang.Error: Unresolved compilation problem: at Problem5.Priblem5_6.main(Priblem5_6.java:5)

どこで初期化するべきですか

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

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

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

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

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

nob.

2021/10/14 01:32

"3.最大値まではあっていると思う" って、正しい値が表示されることを確認した、という意味ですか?
退会済みユーザー

退会済みユーザー

2021/10/14 01:35

``` package Problem5; public class Priblem5_6 { public static void main(String[] args){ int num[] = new int[10]; for (int i =0;i < num.length ; i++){ num[i]=(int)(Math.random()*10)+1; } for(int i =0;i < num.length;i++){ System.out.print(num[i] + " "); } System.out.println(); System.out.print("最大値 :"); int max =0; for(int i =0;i < num.length ;i++){ if(num[i] > max){ max = num[i]; } } System.out.print(max + " "); } ``` ここまでの結果は10個の乱数と最大値の値を確認できてます。
BeatStar

2021/10/14 01:38

失礼ですが、このコードはどこから持ってきたのでしょうか。ご自分で考えたのでしょうか。 それともどこからかのコピペ(手打ちだとしても)でしょうか。 仮に前者(= 自分で考えた)であればあり得ないようなミスをしていますから。
退会済みユーザー

退会済みユーザー

2021/10/14 01:42

プログラムの例をみながら自分で書きました
BeatStar

2021/10/14 01:44 編集

つまり、答え(だと思われるもの)を見て手打ちでってことですか?
退会済みユーザー

退会済みユーザー

2021/10/14 01:46

サンプルプログラムを自分で今回の場合に合うように変えた感じです
BeatStar

2021/10/14 01:50

そりゃ、うまくいくはずないですね。 『英語版の羅生門の台本を使って、ところどころいじりましたが、友人に読ませると「この小説意味不明」と一蹴されました。なぜなのでしょうか』ぐらいの無茶苦茶さです。 英語だからと言って考え無しに闇雲にいじったらそりゃ意味不明になるでしょ。 それと同義のことをしています。
BeatStar

2021/10/14 01:51

とりあず、私の回答にあるように、「エラーメッセージを読みましょう」です。 そこからです。
退会済みユーザー

退会済みユーザー

2021/10/14 01:56

エラーメッセージは初期化されてないという意味です
BeatStar

2021/10/14 02:02 編集

いや、だから、「省略せずに」書きましょう。 省略しても、回答者はそのメッセージを見ていないのだからわかるわけありません。 確かに実際にコンパイラに通せばいいですが、本来はそれは質問者さんがやるべきことです。 仮に『初期化されていないという意味です』というふうに省略したら回答者は『んじゃあ、初期化すればいいんじゃね?』としか言えません。 それで質問者さんが分かるのならここで質問なんてしないはずです。 現に他の方に『そのエラーメッセージ直せばいいんじゃね?』と言われていますね。 わかりやすい説明をしてもらいたいなら『出来る限りわかりやすい説明をすべき』です。 (的確に説明せよとは言っていません。「心掛けよ」です)
BeatStar

2021/10/14 02:02

それと、質問は編集できるので編集しましょう。
退会済みユーザー

退会済みユーザー

2021/10/14 02:08

編集しました。
BeatStar

2021/10/14 02:15

コードは変えていませんよね?
退会済みユーザー

退会済みユーザー

2021/10/14 02:16

変えてません
BeatStar

2021/10/14 02:20

5行目はなにになっていますか?
退会済みユーザー

退会済みユーザー

2021/10/14 02:22

public static void main(String[] args){ です。
dodox86

2021/10/14 02:51

止めはしませんが、現状で、手取り足取りやってもあまり意味がないと思いますよ。
Zuishin

2021/10/18 02:05

基礎からやってたら誰でもできる問題なので、これができないということは基礎を飛ばして勝手に先に進んでいるように思います。 教科書を読み直してください。 答えは全部そこにあります。
guest

回答3

0

※ この回答には、ここに書くべきじゃないと事柄が書かれていますが、追記修正依頼欄には書きづらいのでここに書きます。

一つ目。エラーメッセージぐらいは読みましょう
エラーメッセージにヒントが隠されています。

エラーメッセージは罵倒でも暴言でもありません。コンパイラ等からのメッセージです。
つまり今の状態は『相手の話を聞かずに早合点(または思い込みで)して暴走している人』です。

『変数a未定義』とかってあれば、『変数が宣言されていないことが原因』です。
なので宣言すればいい……とね。

なのに、エラーメッセージは出さずに『エラーが出た(泣』というのです。

二つ目。プログラミングは「こう書けばいい」と言うものではありません

プログラミングは「現実世界のシミュレーション」です。

三つ目。プログラムは書いたおとりにしか動かない

プログラミング言語が悪いのでもなく、プログラムが悪いのでもなく、OSが悪いのでもなく、
『書いたとおりにしか動かない』ものです。

なのでエラーが出るってことはロジックがおかしいか、書き方がおかしいのです。

コンパイルエラーなら後者、つまり構文ミスとかですね。

それなのに、コードだけ出して、『どうすればいいの』と言われてもね……

四つ目。基礎をないがしろにしないように!!!!!!!!!!

コードを見ると、あり得ないミス(どころじゃないなこれは...)を連発しています。
おそらく基礎をないがしろにしているからでしょうね。

失礼ですが入門書をちゃんと読みました?

完璧には出来なくても一通りやった人ですらやらないようなミスをしています。


[ヒント1]

まず、ヒント1。Javaはクラス外の場所にコードを書くことは不可能です。

ヒント2。スコープ外からは変数にアクセスできない。配列だろうとオブジェクトだろうとリストだろうとです。

ちゃんとしたヒントを上げてもいいですが、せめて上記の四つのアレを参考にしてやってみてください。
それからです。

(四つのアレを参考にして下されば、この回答本文も修正する予定)

投稿2021/10/14 01:32

編集2021/10/14 01:34
BeatStar

総合スコア4962

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

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

0

ベストアンサー

{ が 9個、} が 13個で、対応が取れていません。
まず、それを直してください。

} が、クラスの終わりなのか、メソッドの終わりなのか、
for文の終わりなのか、if文の終わりなのかが分かるように書きましょう。

追記
質問のコードが修正されましたが、{ が 8個、} が 9個です。
{} の対応はよくわかるように書かれていて、
最後に余分な } が付いているように見えます。

mainメソッドの終わりが、
System.out.println("最小値 :" + min); の次の行の } となります。
そうすると、d、sum、avg は Priblem5_6クラスのフィールドになります。
そのあとに、代入文や for文などの文が続いています。
しかし、文はクラスの中には書けません。
通常、文はメソッドの中に書くものです。
その } が余分なものだったので、それをとると、
d、sum、avg は mainメソッドの中に入り、ローカル変数になります。
文は mainメソッドの中に入り、エラーは無くなります。

投稿2021/10/14 03:45

編集2021/10/18 03:40
kazuma-s

総合スコア8224

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

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

退会済みユーザー

退会済みユーザー

2021/10/18 07:59

どういことですかね。 ちょっと理解できないです
kazuma-s

2021/10/18 13:36

「{」が 8個、「}」が 9個です。数えられないのですか? どの「}」が余計なのかを説明しているのですが。
退会済みユーザー

退会済みユーザー

2021/10/19 00:05

「}」が多いことはわかりますが、消してもエラーはなくなりません。
退会済みユーザー

退会済みユーザー

2021/10/22 06:33 編集

package Problem5;
kazuma-s

2021/10/19 00:22

最大値や最小値は同じにならないでしょう。 数値が同じになるのは平均値です。 不具合は正しく認識し、それを伝えましょう。 avg が毎回同じということは、sum が毎回同じ。 sum = sum + i; で i は 0 から 9 までの値で sum は 45。 こんな風に考えられませんか? 何の平均値を取ろうとしているんですか?
退会済みユーザー

退会済みユーザー

2021/10/19 00:34

1から10の10個の乱数の平均値をとろうとしてます。
退会済みユーザー

退会済みユーザー

2021/10/19 02:30

sum = sum + 1をsum += date[i]に変更したところエラーも出ずに平均値の値もちゃんと出すことができました。
guest

0

処理を記述できるのはメソッドの中だけです。
mainメソッドどころかPriblem5_6の中からすらはみ出してます。

投稿2021/10/14 01:19

ozwk

総合スコア13553

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

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

退会済みユーザー

退会済みユーザー

2021/10/14 01:27

どこからやり直せばいいんですかね?
nob.

2021/10/14 01:33

「構文エラー」と言われているので、それを直しましょう。
ozwk

2021/10/14 02:04

最大値を求めるコードまで戻って、 最大値を出した後になんか適当な文章(Hello Worldとか)を表示するところからですかね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問