我试图让用户输入一个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]);
}
答案 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++)
{