Javaで1行目は数値のみ、2行目は文字と数値のコードのエラーを解決したい

実現したいこと

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 コメント