0

最近、コーディング中に次のエラーに遭遇しました。

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' で始まるかどうかを確認することでした。

すべての変数は宣言されていますが、この投稿を簡潔にするために、それらを含めていません。

4

3 に答える 3

0

sc.nextLine()charAt 呼び出しの前に割り当てるための呼び出しuserNameは、空の文字列を返す可能性があります (たとえば、空白行をスキャンした場合)。

于 2013-04-13T02:58:12.280 に答える