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

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

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

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

3回答

3043閲覧

javaでクラス間で配列を受け渡すプログラムを作ろうとしています。

退会済みユーザー

退会済みユーザー

総合スコア0

Java

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2017/08/03 05:04

編集2017/08/03 09:43

java初心者です。

obj.standardscoreSet(a[l],num,average);
var[x] += ((a[x] - ave)*(a[x] - ave));
の所で
java.lang.ArrayIndexOutOfBoundsException

と指摘されているのですが、どのように直せばいいのかが分かりません。

ご教授お願い申しあげます。

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

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

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

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

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

ygoooo

2017/08/03 05:11

コードを記載する際はマークダウン記法を使いましょう。「```」で囲んでください。
退会済みユーザー

退会済みユーザー

2017/08/03 05:13

ご指摘ありがとうございます。
fiveHundred

2017/08/03 10:05

元のソースを消した意図はなんでしょうか? また、私の回答をベストアンサーにした理由も聞きたいです。 正直申し上げますと、目的を達成できないから適当にベストアンサーをつけて、質問を無理やり終わらせたとしか思えないです。
退会済みユーザー

退会済みユーザー

2017/08/03 10:18

すいません。皆様のご指摘通り、自分の作りたいプログラムを作ると考え、元のソースは消去させていただきました。
fiveHundred

2017/08/03 10:27

退会済みのため、何を言っても無駄でしょうが、システムからのメッセージにある通り、内容を消す行為は禁止されております。今回の場合、ソースに直接指摘している回答もあるので、ソースを消すことは望ましくありません。
momon-ga

2017/08/04 11:33

そもそも、消去したって編集の履歴に残ってるので意味ないですけどねぇ・・・
guest

回答3

0

ついでに私からも2点ほど

Java

1 double[] Answer=new double[n];

上記では、standardscoreSet()が呼び出される前にn個の配列が作成されます。
そのタイミングでは、nに対して代入が行われていないため、正しくない動作になるはずです。
(実行してないため、本当にそうかは分かりませんが、おそらく0個の配列が作成されると思います)

Java

1 var[ix] += ((a[ix] - iave)*(a[ix] - iave));

上記で+=が使われていますが、これはどういう意味でしょうか?
a += ba = a + bと同義ですが、aに該当するvar[ix]は、配列の作成後に何も代入されていないため、このように使うのはおかしいです。
単純に代入したいのであれば、a = bで十分でしょう。

また、Subクラスの各配列はx番目しか使われていないのにも関わらず、配列にしておりますが、これはどういった意図でしょうか。
おそらく、追加の機能を作ることを前提にしているからだと思っていますが、そうでないなら普通の変数で十分です。

投稿2017/08/03 07:13

fiveHundred

総合スコア9853

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

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

0

何から指摘したらいいかわからないぐらいひどいコードになっています。

あなたがやろうとしていることはあなたのレベルを数段階超えてます。
「配列渡したら合計を返す」ぐらいまで戻ったほうがいいです。

とりあえず指摘

1 .

maina[]の各要素は「点数」を表していて、
standardscoreSet()の第一引数ixに使われている。
そのixstandardscoreSet()内で配列のインデックスに使われている。
その配列の要素数はa[]の要素数を渡されているので明らかにおかしい。

2 .

java

1int[] a=new int[n]; // 全部0 2int[] var=new int[n]; 3int[] bu=new int[n]; 4double[] stdev=new double[n]; 5double[] hensachi=new double[n]; 6 7var[ix] += ((a[ix] - iave)*(a[ix] - iave)); // 何がしたいのこれ?

投稿2017/08/03 06:10

編集2017/08/03 06:11
ozwk

総合スコア13528

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

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

0

java.lang.ArrayIndexOutOfBoundsException
というエラーが発生してしまいます。自分で色々と調べて見たのですが、よく分かりません。
ご教授お願い申しあげます。

調べたなら、なんとなくあたりはつくと思うのですが・・・
ソースは見ていませんが、Exceptionが発生した行数で、どの配列に問題があるかわかるはずです。

追記:コメントより

java

1obj.standardscoreSet(a[l],num,average); 2 var[x] += ((a[x] - ave)*(a[x] - ave));
> の所が指摘されている まず、要素の1番目は、0というのは理解していますか? x(ix?)が1個の場合は、a[1]でなくa[0]で、アクセスする必要があります。 あと、inとixの大小関係は正しいですか? その添え字の値について確認すれば解決できるかと。 maiko0318さんより確認方法の提示 > その行の手前でxを表示してみてください。 > 有効範囲は0からnum-1までです。またnumが正しく設定されていることも確認しましょう

投稿2017/08/03 05:16

編集2017/08/03 07:35
momon-ga

総合スコア4820

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

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

退会済みユーザー

退会済みユーザー

2017/08/03 05:36

```obj.standardscoreSet(a[l],num,average);``` ``` var[x] += ((a[x] - ave)*(a[x] - ave));``` の所が指摘されているのですが、どのように直せばいいのかが分かりません。
momon-ga

2017/08/03 06:05 編集

ちょっと、変数名がわかりずらいのと無駄な代入が多くて理解しずらいですが まず、要素の1番目は、0とうのは理解していますか? x(ix?)が1個の場合は、x[1]でなくx[0]にアクセスします。 あと、inとixの大小関係は正しいですか?
maiko0318

2017/08/03 06:10

その行の手前でxを表示してみてください。 有効範囲は0からnum-1までです。またnumが正しく設定されていることも確認しましょう。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問