実現したいこと
1行目に2行目以降の行数を入力、1行目を命令数は最小値以上、最大値未満。
2行目からは1行目に入力した数値分の行数を入力。
2行目以降は文字と数値が混合で半角スペースで区切られる。
SET 数値 数値
ADD 数値
SUB 数値
入力される数値は(SETの場合だけ最後の数値)最小値以上、最大値未満。
SETの場合SET 1なら変数1に後続で入力される値の数値を代入。
SETの場合SET 2なら変数2に後続で入力される値の数値を代入。
ADDの場合は変数1の値にADDの数値を足した値を変数2に代入。
SUBの場合には変数1の値にSUBの数値を引いた値を変数2に代入。
これをの計算した値を
変数1 変数2
のように出力したい。
発生している問題・分からないこと
java初心者です。
課題をやってエラー文を解消できないのでお教えいただけたら嬉しいです。
2行目の入力にどうしてもならなくて原因がよくわかりません・・・。
2行目の切り出しがうまくいかず想定しているif文にならず、どういうことなのかわかりません。
エラーメッセージ
error
1Index 1 out of bounds for length 1
該当のソースコード
java
1import java.util.Scanner;2 3public class Project4 {4 public static final int MEIREISU_MIN = 0;5 public static final int MEIREISU_MAX = 10;6 public static final int HENSU_MIN = -1000;7 public static final int HENSU_MAX = 1000;8 public static void main(String[] args) {9 Scanner sc = new Scanner(System.in);10 11 System.out.println("命令数を入力して下さい。");12 int Meireisu = sc.nextInt();13 14 /*Meireisuが最小値以上最大値未満か*/15 if (Meireisu < MEIREISU_MIN || Meireisu > MEIREISU_MAX ) {16 System.out.println("命令数は" + MEIREISU_MIN + "以上" + MEIREISU_MAX + "以下で入力してください。");17 }18 19 try {20 /*変数用意*/21 int i = 1;22 int Atai = 0; 23 int Value = 0; 24 int hensuOne = 0;25 int hensuTwo = 0;26 27 /*Meireisuで入力した値だけ繰り返す*/28 while (i < Meireisu) {29 /*2行目を半角スペース入力しNameとAtaiに分割*/30 String[] hensu = sc.nextLine().split(" ");31 String Name = hensu[0];32 Atai = Integer.parseInt(hensu[1]);33 34 /*NameがSETならまだ分割してない値をValueに*/35 if (Name == "SET") {36 Value = Integer.parseInt(hensu[2]);37 }38 39 /*数値が最小値以上最大値未満か*/40 if (Value < HENSU_MIN || HENSU_MAX > Value) {41 throw new Exception("値は" + HENSU_MIN + "以上" + HENSU_MAX + "未満で入力してください。");42 }43 else if (Atai < HENSU_MIN || HENSU_MAX > Atai) {44 throw new Exception("値は" + HENSU_MIN + "以上" + HENSU_MAX + "未満で入力してください。");45 }46 47 /*Nameの文字によって計算*/48 switch (Name) {49 case "SET":50 if (Atai == 1) {51 hensuOne += Value;52 }53 else if (Atai == 2) {54 hensuTwo += Value;55 }56 break;57 case "ADD":58 hensuTwo += hensuOne + Atai;59 break;60 case "SUB":61 hensuTwo += hensuOne - Atai;62 break;63 }64 i++; 65 }66 /*変数1と変数2の出力*/67 System.out.println(hensuOne + " " + hensuTwo);68 }69 catch (Exception e) {70 System.out.println(e.getMessage());71 }72 finally {73 sc.close();74 }75 }76}
試したこと・調べたこと
上記の詳細・結果
1行目は入力できていて2行目の入力に行かない原因が調べててもいまいちわかりません。
.split(" ")でスペース区切りで入力できると思ったのですが、その後の入力したものの値の切り分けが良くないのか具体的にソースコードをどう修正すればいいのか分からないです。
無事にエラーは解決しました!
別の問題が起きていて模索しています・・・。
補足
初質問、初心者です。質問する上での基本的なルールなど分からないので、質問内容やコードの書き方などで不足していたら申し訳ございません。よろしくお願いします。
0 コメント