最近、コーディング中に次のエラーに遭遇しました。
Exception in thread "main" java.lang.StringIndexOutOfBoundsException:
String index out of range: 0
at java.lang.String.charAt(String.java:686)
at TestAssign2.main(TestAssign2.java:119)
行を追加するとエラーが表示されます -firstLetter=userName.charAt(0);
ユーザーが要求されたすべての値を入力した後、コードとプログラムにエラーメッセージが表示されます。この行が入力される前は、すべて正常に機能していました。
while(uProgStart.equals(PROGSTART))
{
System.out.println("What is your name?");
userName=sc.nextLine();
junk = sc.nextLine();
System.out.println("What is the year of your birth?");
birthYear = sc.nextInt();
junk = sc.nextLine();
System.out.println("What is the date of your birth? (dd.mm)");
birthDDMM = sc.nextDouble();
junk = sc.nextLine();
day=(int)birthDDMM;
month=(int)Math.round(100*birthDDMM)%100;
//Begins calculation of Dss Score
if(birthYear%CYCLE_LENGTH!=SNAKE_YEAR)
{
DssScore=DssScore+1;
}
if(month<SPRING_BEGINNING||month>SPRING_END)
{
DssScore=DssScore+2;
}
firstLetter=userName.charAt(0);
if(firstLetter==(LOWER_S)||firstLetter==(UPPER_S))
{
DssScore=DssScore+4;
}
この行の目的は、ユーザーが入力した名前が文字 's' または 'S' で始まるかどうかを確認することでした。
すべての変数は宣言されていますが、この投稿を簡潔にするために、それらを含めていません。