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

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

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

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

Q&A

解決済

2回答

2476閲覧

java 最大値最小値の表示

aaaajj

総合スコア5

Java

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

0グッド

0クリップ

投稿2020/07/15 00:44

前提・実現したいこと

エラーへの対応策が分からないです。

発生している問題・エラーメッセージ

Exception in thread "main" 最大値:9 最小値:2 java.lang.ArrayIndexOutOfBoundsException: 3 at problem5.Problem5_13.main(Problem5_13.java:35)

該当のソースコード

java

1package problem5; 2 3/** 4 * 練習問題5-13 5 * 6 * 3×3の二次元配列を作成し、それぞれに0から9の乱数を発生させ、実行例のように、その内容と、数値の最大値・最小値を表示させなさい。 7 */ 8public class Problem5_13 { 9 /** 10 * メインメソッド メイン処理を実行します。 11 * 12 * @param args 13 * プログラム起動引数 14 */ 15 public static void main(String[] args) { 16 // 配列を作成 17 int[][] a = new int[3][3]; 18 // forの二重ループ 19 for (int i = 0; i < 3; i++) { 20 for (int j = 0; j < 3; j++) { 21 // 0~9の乱数を設定 22 a[i][j] = (int) Math.floor(Math.random() * 10); 23 // 結果の表示 24 System.out.print(a[i][j] + ""); 25 } 26 // 改行 27 System.out.println(); 28 } 29 int max, min; 30 max = a[0][0]; 31 min = a[0][0]; 32 33 for (int i = 1; i < a.length; i++) { 34 for (int j = 1; j < a.length; i++) { 35 if (a[i][j] > max) { 36 max = a[i][j]; 37 System.out.print("最大値:" + max + " "); 38 } 39 if (a[i][j] < min) { 40 min = a[i][j]; 41 System.out.println("最小値:" + min); 42 } 43 } 44 45 } 46 } 47}

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

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

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

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

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

guest

回答2

0

余談ですが、定数を使用したりするともう少しコードが見やすくなりますよ。

int[][] a = new int[3][3]; // forの二重ループ for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { // 0~9の乱数を設定 a[i][j] = (int) Math.floor(Math.random() * 10); // 結果の表示 System.out.print(a[i][j] + ""); } // 改行 System.out.println(); }

final int I_LENGTH = 3; final int J_LENGTH = 3; int[][] a = new int[I_LENGTH][J_LENGTH]; // forの二重ループ for (int i = 0; i < I_LENGTH; i++) { for (int j = 0; j < J_LENGTH; j++) { // 0~9の乱数を設定 a[i][j] = (int) Math.floor(Math.random() * 10); // 結果の表示 System.out.print(a[i][j] + ""); } // 改行 System.out.println(); }

投稿2020/07/15 01:45

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

aaaajj

2020/07/16 01:22 編集

ご回答ありがとうございます! 書き直してみます!
guest

0

ベストアンサー

for (int j = 1; j < a.length; i++) {

j++ しないといけません

で、ほんまは

for (int j = 1; j < a[i].length; j++) {

ですね

投稿2020/07/15 00:54

y_waiwai

総合スコア87774

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

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

aaaajj

2020/07/15 01:24

ご回答ありがとうございます。 エラーは解決できたのですが最大値や最小値が複数出てきたりしてしまうのですが、他の場所に原因があるのでしょうか?
y_waiwai

2020/07/15 01:26

コードを追いかけてみてください。 保持してる値より大きい値が来るとその都度プリントするようになってますよ 最小値も同じ 一度だけにしたいなら、コードの最後にプリントするようにしましょう
aaaajj

2020/07/15 01:34

ありがとうございます! 上手く動きました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問