我想知道输入数字的位置,所以我决定使用解析将String类型转换为int数据类型,源代码如下:
public static void main (String [] Args) {
Scanner input = new Scanner (System.in);
String x = "0" ;
int number = Integer.parseInt(x);
System.out.print("\nEnter 5 numbers: ");
number = input.nextInt();
if ((x.charAt(0) == x.charAt (4)) && (x.charAt(1) == x.charAt(3))) {
System.out.print("The set of numbers is equal to its original value");
} else {
System.out.print("The set of numbers is not equal to its original value");
}
}
编译文件后,它将无法运行,并且出现此错误
线程“主”中的异常java.lang.StringIndexOutOfBoundsException: 字符串索引超出范围:4 在java.base / java.lang.StringLatin1.charAt(未知来源) 在java.base / java.lang.String.charAt(未知源) 在activity10.main(activity10.java:12)
答案 0 :(得分:1)
方法charAt(i)
返回String
的 ith 个字符(从索引0开始)。这意味着如果您要呼叫yourString.charAt(k)
,则yourString
必须至少具有 k + 1 个字符。
根据您的代码
String x = "0";
x
将始终是 "0"
。因此,对 i> 0 的任何调用x.charAt(i)
都将产生StringIndexOutOfBoundsException
。
以下代码可以满足您的需求吗?
public static void main(String[] args) {
Scanner input = new Scanner (System.in);
System.out.print("\nEnter 5 numbers: ");
String x = input.next();
if ((x.charAt(0) == x.charAt (4)) && (x.charAt(1) == x.charAt(3))) {
System.out.print("The set of numbers is equal to its original value");
} else {
System.out.print("The set of numbers is not equal to its original value");
}
}
答案 1 :(得分:0)
您正在尝试使用扫描仪输入
获取输入号码,您不需要这些行
String x = "0" ;
int number = Integer.parseInt(x);
您需要做的就是先获取数字
int number1 = input.nextInt();
int number2 = input.nextInt();
int number3 = input.nextInt();
int number4 = input.nextInt();
int number5 = input.nextInt();
然后从数字比较开始。
此外,您可以阅读一些Java教程,然后开始编码,因为它可以帮助您了解编程基础