java - java中的数组越界异常
问题描述
如何清除ArrayIndexOutOfBound
java中的异常
线程“main”中的异常 java.lang.ArrayIndexOutOfBoundsException: 10 at word.main(word.java:17)
我的代码如下:
import java.util.*;
import java.lang.*;
class word{
public static void main(String[] args){
String n;
String a[]={"zero","one","two","three","four","five","six","seven","eight","nine","ten"};
String b[]={"eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen","eighteen","nineteen","twenty"};
System.out.println("Enter number in words");
Scanner sc=new Scanner(System.in);
n=sc.next();
for(int i=0;i<=20;i++){
if(n==a[i]){
System.out.println(i);
break;
}
else if(n==b[i]){
System.out.println(i);
break;
}
}
}
}
解决方案
老实说,这里最简单的方法是对所有数字单词使用单个数组,或者使用更灵活的数据结构,例如列表。如果您想保留当前的内联数组定义,但使用列表,这里是一个选项:
String[] a = { "zero", "one", "two", "three", "four", "five", "six", "seven",
"eight", "nine", "ten" };
String[] b = { "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen",
"seventeen", "eighteen", "nineteen", "twenty" };
List<String> nums = new ArrayList<>();
nums.addAll(Arrays.asList(a));
nums.addAll(Arrays.asList(b));
System.out.println("Enter number in words");
Scanner sc = new Scanner(System.in);
String input = sc.next();
for (int i=0; i < nums.size(); i++) {
if (input.equals(nums.get(i))) {
System.out.println(i);
break;
}
}
推荐阅读
- python - __init__.py 中的相对回购路径?
- mysql - MySQL 表连接索引仅在某些条件下工作
- php - 注册第二个组件?Vue.js Laravel6
- arrays - 如何在 Javascript/GAS 中映射和发送电子邮件给不符合特定条件的特定用户
- chai - 如何在赛普拉斯测试中排队
- react-native - 开玩笑在我的本地工作,但不在 CircleCI
- influxdb - 如何使用 FluentD 作为 Telegraf 和 InfluxDB 之间的缓冲区
- java - 如何使用 JavaSpark 有效地处理百万条记录
- azure - 设置 StartFromBeginning = true 时 Azure 函数不会自动启动 cosmos 触发器
- javascript - 如何打开和关闭 Vuetify Carousel 组件的右/左箭头