import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class OutputWeek{
//dayの中身を宣言します。 static final String[] DAY = {"月曜日","火曜日","水曜日","木曜日","金曜日","土曜日", "日曜日"}; private static final int MAX_COUNT = 8; private static final int END_COUNT = 1; private static final int ZERO = 0; /** * メインメソッド * @param args javaコマンド実行時に渡されるパラメータ */ public static void main(String[] args){ //引数ゼロの場合 //数値かどうかの判断を行い数値でない場合処理を終了します。 //1から7の数値でない場合処理を終了します。 if (!(isNumber(args[ZERO]))) { System.out.println("数値ではありません。"); return; } //argsの文字列をint型に変更します。 int num = Integer.parseInt(args[ZERO]); if (END_COUNT > num || MAX_COUNT < num) { System.out.println("数値が不正なため、1から7を入力してください"); return; } System.out.println(DAY[num - END_COUNT]); } // trueの数値を出力します。 private static boolean isNumber(String value){ System.out.println(value); //0-9の数字と曜日が一致するかの正規表現を行います。 String regex = "^[0-9]$"; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(value); //入力した数値とマッチした変数を返します。 return matcher.find(); }
}
■ 質問内容
コンパイルできるようには、なっていますが引数ゼロの際落ちてしまします。
引数ゼロがlength == 0だと言うことは理解できております。
実装仕方がわからないのでご教授いただきたいです。
あと、0の定数名何かいいものがあればそちらもお願い致します。
引数0のとき落ちる、と判断した理由は何でしょう?
エラーが出ているならそれを書いてください。
引数ゼロがlength == 0だということが理解出来ていて、何が分からないの?
if文の書き方?
それともlengthの使い方?
argsは文字列配列だから引数の数はargs.lengthで求まることが分からない???
Exception in thread "main" java.lang.ArrayIndexOutofBoundsException:
Index 0 out of bounds for length 0 at OutputWeek.main(OutputWeek.java:29)と出ております。
実行時は
java OutputWeek 1 = 月曜日
java OutputWeek = 上記に記載したエラーです。
迅速ご返事ありがとうございます。
すみません理解は出来ているのですが
lengthの使ったif文の書き方が分からないです。
回答2件
あなたの回答
tips
プレビュー