首页 > 解决方案 > java中的数组越界异常

问题描述

如何清除ArrayIndexOutOfBoundjava中的异常

线程“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;
            }
        }
    }
}

标签: javastring

解决方案


老实说,这里最简单的方法是对所有数字单词使用单个数组,或者使用更灵活的数据结构,例如列表。如果您想保留当前的内联数组定义,但使用列表,这里是一个选项:

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;
    }
}

推荐阅读