-1

当我为此处的代码输入 1 个字母时,出现错误“线程“主”java.lang.StringIndexOutOfBoundsException 中的异常:字符串索引超出范围:1”我该怎么办?

  static void addSchool() throws IOException {
            System.out.print("Enter Name of School: ");
            bName = br.readLine();
            bName1= bName.charAt(0);
            bName2= bName.charAt(1);
            System.out.print("Enter Address of School: ");
            bAdd = br.readLine();
            System.out.print("Enter Name of Pricipal: ");
            pName = br.readLine();
            System.out.print("Enter Number of Students: ");
            nOS = Integer.parseInt(br.readLine());
            newSchool = new School(bName, bAdd, pName, nOS);


            prev = null;
            curr = list;

            if(curr != null && bName1 > curr.getItems()){
                while (curr != null && bName1 == curr.getItems())
                    prev = curr;
                curr = curr.getNext();
            }
            if (curr != null && bName2 > curr.getItemss()){
                while(curr != null && bName2 == curr.getItemss())
                    prev = curr;
                curr = curr.getNext();
            }
  }
4

3 回答 3

1

据我了解您的消息 - 您在输入中有 1 个字母,但您正在尝试访问第一个字母(通过访问 [0] 元素)和第二个(通过访问 [1] 元素)。

表格从 0 开始编号,所以难怪你会得到*OutOfBoundsException

于 2013-09-10T13:54:19.240 回答
1

您正在尝试访问字符串中甚至不存在的字符,可能是该行:

   bName2= bName.charAt(1);

所以请确保您正在尝试访问在字符串中找到的值

于 2013-09-10T13:59:16.633 回答
0

bName2= bName.charAt(1);

您正在尝试从字符串中获取第二个字符,其中可能不包含多个字符。这就是可能引发此异常的地方。在进行调用之前检查以确保bName2至少 2 个字符长。

这只是一个假设。如果您能告诉我们代码中的哪一行生成了该异常,那就容易多了。

于 2013-09-10T13:51:19.137 回答