java.lang.StringIndexOutOfBoundsException:在使用charAt函数时
我想得到“,”的位置,所以我使用了charAt函数 下面是代码java.lang.StringIndexOutOfBoundsException:在使用charAt函数时,java,Java,我想得到“,”的位置,所以我使用了charAt函数 下面是代码 public class JavaClass { public static void main(String args[]){ System.out.println("Test,Test".charAt(',')); } } 但问题是我得到了StringIndexOutOfBoundException任何人都能帮我解释为什么我会得到这个错误吗 我还想知道,如果没有找到“”,那么返回的值是多少 错误如下
public class JavaClass {
public static void main(String args[]){
System.out.println("Test,Test".charAt(','));
}
}
但问题是我得到了StringIndexOutOfBoundException任何人都能帮我解释为什么我会得到这个错误吗
我还想知道,如果没有找到“”,那么返回的值是多少
错误如下
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 44
at java.lang.String.charAt(Unknown Source)
at JavaClass.main(JavaClass.java:5)
charAt
方法需要一个int
表示从字符串中查找的基于0的索引。不幸的是,您传入的char
,可以转换为int
,44
,并且字符串中没有45个或更多字符,因此出现StringIndexOutOfBoundsException
是否要查找字符串中
,
的位置?那么charAt
是错误的方法。请尝试使用该方法。您应该使用indexOf
,而不是charAt
System.out.println(“Test,Test.indexOf”(“,”)代码>
charAt
仅返回字符串某个位置的字符;在本例中,它将是“,”的ascii码。如果您查看该方法,您将看到它包含一个int
参数。当您给“
字符时,它会获取该字符的ASCII值(44),并尝试获取该索引处的值,该值恰好远大于字符串的长度。这就是为什么会出现StringIndexOutOfBoundsException
为此,您需要使用
System.out.println("Test,Test".indexOf(','));
字符(int位置)将输入参数作为整数。“,”等效ascii值44,因此只有您得到异常 阅读charAt
javadoc并了解基本类型<在该方法调用中,'
被视为int
<代码>字符串索引超出范围:44应该放弃它。