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

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

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

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

Q&A

解決済

3回答

3026閲覧

配列の五つの要素を出力したら一つだけエラーで表示されません

akata

総合スコア3

Java

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

0グッド

0クリップ

投稿2021/09/07 05:12

前提・実現したいこと

一次元配列に1~100までの数字を乱数でセットし、昇順で並べ替える

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

14
20
43
69
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 5 out of bounds for length 5
at test.Testclass.main(Testclass.java:25)

エラーメッセージ

14
20
43
69
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 5 out of bounds for length 5
at test.Testclass.main(Testclass.java:25)

該当のソースコード

package test;

import java.util.Arrays;

public class Testclass {

public static void main(String[] args) { // TODO 自動生成されたメソッド・スタブ int a = (int)(Math.random()*100); int b = (int)(Math.random()*100); int c = (int)(Math.random()*100); int d = (int)(Math.random()*100); int e = (int)(Math.random()*100); int[] num = new int[5]; num[0] = a; num[1] = b; num[2] = c; num[3] = d; num[4] = e; Arrays.sort(num); for(int i =1; i <= 100; i ++) { System.out.println(num[i]); } }

}

Java ソースコード

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

1T2R3M4

2021/09/07 05:18

復習するか、 メンターサービスをご検討されてはいかがですか。
dodox86

2021/09/07 05:46

もうちょっとちゃんと自分で考えましょうよ、って言う。
m.ts10806

2021/09/07 07:03

質問は編集できます。 コードはマークダウンのcodeにてご提示ください。 参考:https://teratail.com/questions/238564 マークダウンのcode対応はteratailでは必須です。かなりスルーされていますが、この質問から対応してください。 コードがマークダウン対応されてないだけで質問読まない人もいます。
guest

回答3

0

ベストアンサー

java

1for(int i = 1; i < 3; i++) { 2 System.out.println(num[i]); 3}

とすればとりあえずエラーは出なくなるでしょう。2個しか値は表示されませんが。

正しく修正するには

  • 配列の添字( num[i]i )は0から始まる
  • 配列の範囲外( num[5] )にアクセスできない

ことを念頭に置いて、どう修正すれば5個の値が全て表示できるか考えてみてください。

投稿2021/09/07 06:22

mather

総合スコア6759

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

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

akata

2021/09/07 06:58

forの中の数字が[]の中の数字ってことですね!
guest

0

int[5]; で定義しており、特に拡張された様子もないので5(6番目)を参照した時点でArrayIndexOutOfBoundsExceptionになります。

0から入れていってるにも関わらずforのスタート1から参照していってるので0を除いた4つ出ただけです。スタート0にしても格納された5つが出るようになるだけでArrayIndexOutOfBoundsExceptionは避けられません。
ループ回数を配列のサイズにするなど工夫してください。

Array Index Out Of Bounds 単語に分けると意味がわかるはず。
これに限らずExceptionが出た場合は「どういうときに出るものか」確認するようにしてください。
そのまま検索して出てきます。

投稿2021/09/07 05:18

編集2021/09/07 05:26
m.ts10806

総合スコア80875

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

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

0

int[] num = new int[5];

5つの要素の配列を定義してます

for(int i =1; i <= 100; i ++) {

System.out.println(num[i]);
}

どこまでだしてますか


ちなみに、5つの要素の配列であるなら、使えるのは
num[0]からnum[4]までの5つ分となります
それを超えるとエラーになりますね

投稿2021/09/07 05:14

編集2021/09/07 05:56
y_waiwai

総合スコア88042

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

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

akata

2021/09/07 05:18

わかりません!
y_waiwai

2021/09/07 05:20

あなたが自分で書いてるコードなんですから、どういう動作をするかぐらいはわかりませんか。 まずはJAVAの基本的な文法を学習しましょう それさえおぼつかないでは、ここでいくら解説したところで理解できないのでは。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問