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

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

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

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

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

3回答

1759閲覧

コマンドラインの文字と数字を別の配列に入れたいです。

hfiehifhifi

総合スコア0

Java

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

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

0クリップ

投稿2020/07/12 04:29

編集2020/07/13 04:59

前提・実現したいこと

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

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 0 at Myproject/hello.Seiseki.main(Seiseki.java:23)

該当のソースコード

package hello; public class Seiseki { public static void main(String[] args) { double total = 0; double average = 0; double sd = 0; double sum = 0; String score; double [] score1, hensachi; score1 = new double [0]; hensachi = new double [0]; String[] name = new String [args.length/2]; for(int i = 0; i < args.length; i++ ) { //データの格納 if (i % 2 ==0) { name[i] = args[i]; } else if (i % 2 ==1) { score = args[i]; //素点 score1[i] = Double.parseDouble(score);//素点をString型からdouble型に変更 } } for (int j = 0; j < score1.length; j++) { total+= score1[j]; } average = total / (score1.length);//平均 double b = ((double)Math.round(average * 10))/10; //平均を四捨五入 for(int k = 0; k < score1.length; k++) { sum += sqr(score1[k] -b);//標準偏差 } sd = Math.sqrt(sum/score1.length); double c = ((double)Math.round(sd * 100))/100; //標準偏差を四捨五入 for (int l = 0; l < score1.length; l++) { hensachi[l] = 50 +(((score1[l] - b)/c)*10 );//偏差値 } double seiseki[][]; seiseki = new double [2][score1.length]; seiseki[0] = score1; seiseki[1] = hensachi; System.out.println("平均 = " + b);//平均の表示 System.out.println("標準偏差 = " + c);//標準偏差の表示 System.out.println(" Score"+ " StdScr"); System.out.println(name); System.out.print(name +" "+ seiseki[0]+" " );//名前の表示 //偏差値の表示 } private static double sqr(double d) { return d * d; }

試したこと

何があっているのか間違っているのかすらわかりません。。

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

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

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

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

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

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

guest

回答3

0

とりあえず 今週の木曜日に提示した同様(同一?)の質問の回答

質問的に課題とおもったから単純なコピペを避けるため
初期データの生成場所だけかえてありますが、計算は変更不要。formatは調整してください。

投稿2020/07/12 07:01

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

最終結果はこのようにしたいです。

Average = 75.9
Standard Deviation = 18.85
Anne Score 100
StdScr 62.8
Diana Emily Bryce Jane
Kilmeny Marigold 42 64
32.0 43.7
Glbert
99 60 89 79 74 62.3 41.6 57.0 51.7 49.0

変な結果表示ですね。

Java

1package hello; 2 3public class Seiseki { 4 5 public static void main(String[] args) { 6 // args : Anne 100 Glbert 99 Diana 60 Emily 89 7 // Bryce 79 Jane 74 Kilmeny 42 Marigold 64 8 int n = args.length / 2; 9 int[] score = new int[n]; 10 double[] hensachi = new double[n]; 11 String[] name = new String [n]; 12 13 int j = 0; 14 double total = 0; 15 for (int i = 0; i < n; i++) { 16 name[i] = args[j++]; 17 score[i] = Integer.parseInt(args[j++]); 18 total += score[i]; 19 } 20 double average = total / n; 21 22 double sum = 0; 23 for(int i = 0; i < n; i++) 24 sum += sqr(score[i] - average); 25 26 double sd = Math.sqrt(sum / n); 27 28 for (int i = 0; i < n; i++) 29 hensachi[i] = 50 + 10 * (score[i] - average) / sd; 30 31 System.out.printf("Average = %.1f\n", average); 32 System.out.printf("Standard Deviation = %.2f\n", sd); 33 System.out.printf("%s Score %d\n", name[0], score[0]); 34 System.out.printf("StdScr %.1f\n", hensachi[0]); 35 for (int i = 2; i < 6; i++) System.out.print(name[i] + " "); 36 System.out.printf("\n%s %s %d %d\n", name[6], name[7], score[6], score[7]); 37 System.out.printf("%.1f %.1f\n", hensachi[6], hensachi[7]); 38 System.out.println(name[1]); 39 for (int i = 1; i < 6; i++) System.out.print(score[i] + " "); 40 for (int i = 1; i < 6; i++) System.out.printf("%.1f ", hensachi[i]); 41 System.out.println(); 42 } 43 private static double sqr(double d) { return d * d; } 44}

投稿2020/07/12 06:12

編集2020/07/12 06:17
kazuma-s

総合スコア8224

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

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

hfiehifhifi

2020/07/12 06:23

ご回答ありがとうございます! 私のミスで結果表示が変になってしまいました。 結果は表のようにしたくて、 平均 標準偏差 名前 素点 偏差値 ←×8 のようなものにしたいです。 ちなみにfor (int i = 0; i < n; i++) { name[i] = args[j++]; score[i] = Integer.parseInt(args[j++]); total += score[i]; } ここの部分のargs[i++]やargs[j++]ではどのような処理が行われているのですか??
guest

0

for(int i = 0; i < args.length; i++ ) { //データの格納

if (i % 2 ==0) { name[i] = args[i];

name[i]では配列の範囲外となってしまいますね

投稿2020/07/12 04:42

y_waiwai

総合スコア88042

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

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

hfiehifhifi

2020/07/12 04:44

どのように直せばいいですか?、、
y_waiwai

2020/07/12 04:49

> String[] name = new String [args.length/2]; コマンドラインの半分のサイズにしてるんですから、コマンドライン引数と同じサイズでアクセスしてたらそら越えますがな、ってはなしですね
y_waiwai

2020/07/12 05:00

> score1 = new double [0]; > hensachi = new double [0]; 双方サイズ0ですやん
退会済みユーザー

退会済みユーザー

2020/07/12 05:33 編集

アカウントの再作成ですかね? 7月にはいってすでに回答した 質問の前提条件、想定結果が殆ど同じですが
hfiehifhifi

2020/07/12 05:37

すみません。同じ質問をしていた方がいらっしゃったんですね。 同じものを解いているのだと思われます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問