【问题标题】:Why is keyword 's' giving me an error?为什么关键字's'给我一个错误?
【发布时间】:2013-08-17 03:55:39
【问题描述】:

我有以下方法,当单词是“sk”但不是“ks”时,它会给我一个错误。这些关键字来自arrPunjabi。

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 7
at StringTes.main(StringTes.java:51)

HashSet<String> all = new HashSet<String>();
    String[] arrPunjabi = {"d b a b s k s", "d t r p n d k h"};
    String[] arrGurmukhi = {"fMfauiq bMdn Aink bwr srb klw smrQ ]", "foln qy rwKhu pRBU nwnk dy kir hQ ]1]"};
    ArrayList<String> arr = new ArrayList<String>();
    String word = "sk";
    char[] wordArr = word.toCharArray();
    for(int i = 0; i< arrPunjabi.length;i++){
        String[] words = arrPunjabi[i].split("\\s+");
        //word[] = {d, b, a, b, s, k, s};
     if (word.length() == 2){
            for(int j = 0; j < words.length; j++){
                if(words[j].startsWith(""+wordArr[0]) && words[j+1].startsWith(""+wordArr[1])){   //this is where I am getting an error.
                    arr.add(arrGurmukhi[i]);
                    all.addAll(arr);
                    arr.clear();
                    arr.addAll(all);
                }
            }
        }

    }
    System.out.println(arr);

【问题讨论】:

  • 您看到了什么错误?是什么原因造成的?
  • 我的cmets里已经提到了
  • 不,你没有。您从不说明错误是什么。现在这是一个没有实际意义的问题,因为 Josh 已经识别并解决了它(请接受他的回答),但是下一次,请给我们完整的错误消息,请给我们在代码中的注释和错误的详细描述你的问题文本。

标签: java regex arrays string


【解决方案1】:

看看你的循环条件;它在j &lt; words.length 的条件下循环。您正在尝试访问位于 j+1 的元素,导致它抛出 IndexArrayOutOfBoundsException。您要么需要将 j &lt; words.length 更改为 j &lt; words.length-1,要么使用替代方法来完成您想要完成的任何事情。

【讨论】:

  • 不,这不是问题。因为当我将我的 arrPunjabi 从“s k s”更改为“d k s”并且我的词是“dk”时这有效,但当它是“dk”时则无效
  • 尝试使用无效索引访问数组中的元素不是问题吗?
  • 没关系。我明白你想说什么。我现在明白了。非常感谢你的帮助! :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-22
  • 2018-12-23
  • 2017-12-17
  • 2013-11-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多