在Java中,将键入的数字作为数组中的索引时出错
对于输入12,此代码给出的错误如下:- 线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常:49 Main.Main(Main.java:8) 有人能告诉我为什么会发生此错误以及如何删除此错误吗?在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超出表数组的范围 解决方案
.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));