有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

string我的java程序给了我一个StringIndexOutOfBoundsException

public static boolean isValidDate(String date) {
    int firstSlash, lastSlash, ddlnt, mmlnt, yylnt;
    int[] Days = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
    boolean dateValid = true;
    String mlnt;
    firstSlash = date.indexOf("/");
    lastSlash = date.indexOf("/");
    ddlnt = Integer.parseInt(date.substring(0, firstSlash));
    mmlnt = Integer.parseInt(date.substring(firstSlash + 1, lastSlash));
    yylnt = Integer.parseInt(date.substring(lastSlash + 1));
    if ((ddlnt == 0) || (mmlnt == 0) || (yylnt == 0))
        dateValid = false;
    else if (mmlnt > 12)
        dateValid = false;
    else if ((ddlnt == 29)
            && (mmlnt == 2)
            && ((((yylnt % 4 == 0) && (yylnt % 100 != 0) || (yylnt % 400 == 0)))))
        dateValid = true;
    else if (ddlnt > Days[mmlnt - 1])
        dateValid = false;
    return dateValid;
}

这是我正在处理的一个项目中的一小段代码,当它的运行产生以下错误时

J:\>java Text5 2 A 0 11/10/1995 11/12/1995
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String ind
ex out of range: -1
        at java.lang.String.substring(Unknown Source)
        at Text5.isValidDate(Text5.java:142)
        at Text5.ValidDate(Text5.java:117)
        at Text5.ArgumentCheck(Text5.java:84)
        at Text5.main(Text5.java:19)

J:\>

第142行是这样的:

 mmlnt = Integer.parseInt(date.substring(firstSlash+1,lastSlash));

这部分代码接收一个带有日期的字符串,即“11/10/1995”。它的工作就是检查它是否是一个有效的日期。程序的其余部分运行良好,只是这部分崩溃了


共 (1) 个答案

  1. # 1 楼答案

    lastSlash中出现错误,因为firstSlash和lastSlash的值相同

    public int indexOf(int ch):返回指定字符第一次出现时该字符串内的索引,如果该字符没有出现,则返回-1

    这行mmlnt=Integer。parseInt(date.substring(firstSlash+1,lastsslash))会给你带来错误

    自从lastSlash<;第一斜杠+1