如何在没有IndexOutOfBound错误的情况下从Java中获取字符串的char?

时间:2017-10-22 16:50:07

标签: java indexoutofboundsexception

我试图从用户输入的字符串中获取前三个字符,但无论我尝试什么,代码总是会导致IndexOutOfBoundException错误。

代码是:

System.out.print("Enter a year: ");
int year = input.nextInt();

System.out.print("Enter a month: ");
String s = input.nextLine();
char ch0 = s.toUpperCase().charAt(0);
char ch1 = s.toUpperCase().charAt(1);
char ch2 = s.toUpperCase().charAt(2);

if (ch0 == 'J') {

    if (ch1 == 'A' && ch2 == 'N') {
        System.out.println("Janruary " + year + " has 31 days."); 
    }

如何解决此错误?

1 个答案:

答案 0 :(得分:0)

替换:

String s = input.nextLine();

使用:

String s = input.next();

由于nextInt在读取令牌之后不消耗任何空格或换行符,这意味着如果用户输入数字并按Enter键,则流中仍然存在换行符。

因此,当您稍后调用nextLine时,它只会读取该换行符并返回空字符串。