在Java中,将键入的数字作为数组中的索引时出错

在Java中,将键入的数字作为数组中的索引时出错,java,arrays,bounds,Java,Arrays,Bounds,对于输入12,此代码给出的错误如下:- 线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常:49 Main.Main(Main.java:8) 有人能告诉我为什么会发生此错误以及如何删除此错误吗?.charAt()方法返回一个字符,当您将其解析为int时,它将为您提供该字符的ascii值 例如,如果输入12,str.charAt(0)将返回'1',将此字符转换为int将得到49(字符1的ascii值),并且索引号49超出表数组的范围 解决方案

对于输入12,此代码给出的错误如下:- 线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常:49 Main.Main(Main.java:8)

有人能告诉我为什么会发生此错误以及如何删除此错误吗?

.charAt()
方法返回一个字符,当您将其解析为
int
时,它将为您提供该字符的ascii值

例如,如果输入
12
str.charAt(0)
将返回
'1'
,将此字符转换为
int
将得到49(字符1的ascii值),并且索引号49超出
数组的范围

解决方案:

通过将
str.charAt(0)
的返回值作为参数传递给
String.valueOf()
,可以将
charAt()
方法返回的字符转换为
String
,然后通过传递
String.valueOf()的返回值将该
String
解析为
int
类型
作为
Integer.parseInt()
的参数

.charAt()
方法返回一个字符,当您将其解析为
int
时,它将为您提供该字符的ascii值

例如,如果输入
12
str.charAt(0)
将返回
'1'
,将此字符转换为
int
将得到49(字符1的ascii值),并且索引号49超出
数组的范围

解决方案:

通过将
str.charAt(0)
的返回值作为参数传递给
String.valueOf()
,可以将
charAt()
方法返回的字符转换为
String
,然后通过传递
String.valueOf()的返回值将该
String
解析为
int
类型
作为
Integer.parseInt()
的参数


正如您所提到的,您正在将字符类型转换为int,因此您得到的是字符的ascii值,而不是数字。要使其工作,请更新这行代码

int cn = Integer.parseInt("" + str.charAt(0));


正如您所提到的,您正在将字符类型转换为int,因此您得到的是字符的ascii值,而不是数字。要使其工作,请更新这行代码

int cn = Integer.parseInt("" + str.charAt(0));


我建议您使用以下方法:

int cn = Integer.parseInt(String.valueOf(str.charAt(0)));

相反。

我建议您使用以下方法:

int cn = Integer.parseInt(String.valueOf(str.charAt(0)));

相反。

您正在将字符转换为int,因为此行的问题int cn=(int)str.charAt(0);您正在将字符转换为int,因为此行的问题int cn=(int)str.charAt(0);为什么使用String.valueOf()?String.valueOf将以字符串形式提供字符,您将解析为整数为什么使用String.valueOf()?String.valueOf将以字符串形式提供字符,您将解析为整数
int cn = Integer.parseInt(String.valueOf(str.charAt(0)));
int cn = Integer.parseInt(sc.nextLine().charAt(0));