前提・実現したいこと
コマンドライン引数に名前と点数を入力して偏差値を求めるプログラムの作成
ここに質問の内容を詳しく書いてください。
JAVA初心者です。名前 点数 名前 点数、、、というコマンドライン引数から偏差値をもとめるプログラムを作成しているのですが名前と点数の区切りが半角スペースのため、:だとうまくできたのですが、半角スペースではうまくいかなくなってしまいました。
知恵を拝借させてください。お願いします!
発生している問題・エラーメッセージ
Integer.valueOfの部分がエラーになってしまいます
半角スペース区切りの場合のコマンドライン引数の使い方
エラーメッセージ
### 該当のソースコード import java.math.BigDecimal; import java.nio.charset.Charset; public class Calc2 { public static void main(String[] args) { // TODO 自動生成されたメソッド・スタブ String[] names = new String[args.length]; Integer [] scores = new Integer[args.length]; int sum = 0; int sum2 = 0; Charset charset = Charset.forName("Shift_JIS"); for(int i = 0; i < args.length; i++) { String[] p = args[i].split(" "); names[i] = p[0]; scores[i] = Integer.valueOf(p[1]); sum += scores[i]; sum2 += scores[i] * scores[i]; } double avg = sum / (double)scores.length; double var = sum2 / (double)scores.length - avg * avg; double sd = Math.sqrt(var); for(int i=0; i < names.length; i++) { System.out.format("%-8s" , names[i]); } System.out.println(); for(int i=0; i < scores.length; i++) { int width = names[i].getBytes(charset).length/2 + 8; System.out.format("%-" + width + "s", scores[i]); } System.out.println(); for(int i=0; i < scores.length; i++) { double deviationValue = 50 + 10 * ((scores[i] - avg)/sd); BigDecimal x = new BigDecimal(deviationValue); x = x.setScale(2, BigDecimal.ROUND_HALF_UP); int width = names[i].getBytes(charset).length/2 + 8; System.out.format("%-" +width + "s", x); } } } ### 試したこと ### 補足情報(FW/ツールのバージョンなど)
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/06/30 12:47
2020/06/30 13:00 編集
退会済みユーザー
2020/06/30 12:58
2020/06/30 13:02
退会済みユーザー
2020/06/30 14:25