java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:java中的12

时间:2014-02-22 06:07:48

标签: java bluej

我试图让用户输入一个12个数字的字符串,并将每个数字分配到数组空间,虽然我能够将数字分配到数组但我在第12行得到了界限异常,我不明白为什么。非常感谢您的帮助。 :)

import java.util.Scanner;

public class Practice
{

    public static void main(String[] args)

    {

        char [] space = new char[13];

        Scanner scanner = new Scanner(System.in);

        System.out.println("Enter number ");

        String input = scanner.nextLine();

        for (int i = 0;i<space.length;i++) 
        {
            char bCode = input.charAt(i); 
            space[i] = bCode;       //assign bCode to store in space array
            System.out.println((i+1)+"th " + space[i]);

        }

2 个答案:

答案 0 :(得分:2)

最可能的问题是字符串input长度不是13个字符,这意味着索引12超出范围,这会抛出java.lang.StringIndexOutOfBoundsException。在使用charAt(i)之前尝试检查输入的长度,例如

for (int i = 0; i < space.length; i++) {
    if (input.length() > i) {
        char bCode = input.charAt(i); 
    }
    space[i] = bCode;       //assign bCode to store in space array
    System.out.println((i+1)+"th " + space[i]);
}

或者,你可以使用它:

for (int i = 0; i < input.length(); i++) {
    char bCode = input.charAt(i); 
    space[i] = bCode;       //assign bCode to store in space array
    System.out.println((i+1)+"th " + space[i]);
}

答案 1 :(得分:0)

您正在检查space变量长度,同时打印输入值

检查input.length()长度而不是space.length长度,这就是您获得StringIndexOutOfBoundsException

的原因

更改此

 here -> for (int i = 0;i<space.length;i++) 
            {

到这个

for (int i = 0;i<input.length();i++) 
        {