実現したいこと
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}
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
1行目は入力できていて2行目の入力に行かない原因が調べててもいまいちわかりません。
.split(" ")でスペース区切りで入力できると思ったのですが、その後の入力したものの値の切り分けが良くないのか具体的にソースコードをどう修正すればいいのか分からないです。
無事にエラーは解決しました!
別の問題が起きていて模索しています・・・。
補足
初質問、初心者です。質問する上での基本的なルールなど分からないので、質問内容やコードの書き方などで不足していたら申し訳ございません。よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー