如何检查数组元素是否包含任何值

时间:2014-06-28 03:26:58

标签: java arrays

这是一个程序,它将String保存为String数组中的键和计数。但 如条件子句(// CONDITION)所示,我无法检查天气中数组的元素是否包含任何值?

我知道它会抛出异常“java.lang.ArrayIndexOutOfBoundsException”,因为它无法将内存分配给未指定的元素。我试图做“nextString.equals(arrays [i + 1])”,它不起作用。

请说明我可以使用的任何条件。

public void mapExample() {
     String text = "text good text good text";
     String[] arrays = text.split(" ");
     Arrays.sort(arrays);
     for(String array :arrays ){
     System.out.println(array);
     }
         int Count=0;
         String thisSring = "";
         String nextString="";
         TreeMap<String,Integer> mapper = new TreeMap<String , Integer>();
         for(int i=0;i<arrays.length;++i){
             thisSring = arrays[i];
             Count++;
             nextString = arrays[i+1];
             if(!thisSring.equals(nextString)){
                 mapper.put(thisSring, Count);
             }


             if(//CONDITION){
                 mapper.put(thisSring, Count);
             }
         }



        Set s = mapper.entrySet();
            Iterator iter = s.iterator();
            if(iter.hasNext()){
            System.out.println(iter.next());
            Map.Entry map = (Map.Entry) iter.next();
            System.out.println( "Key" + " " + map.getKey());
            System.out.println("Value" + " " + map.getValue());
        }
     }
     }

4 个答案:

答案 0 :(得分:0)

您的错误比您想象的要早,

for(int i=0;i<arrays.length - 1;++i){   // Add a "- 1" because,
  thisSring = arrays[i];
  Count++;
  nextString = arrays[i+1];             // this will exceed the array length otherwise.
  if(!thisSring.equals(nextString)){
    mapper.put(thisSring, Count);
  }
}

答案 1 :(得分:0)

...equals(String.valueOf(nextString))

让我解释一下,如果你要对两个String对象进行等于比较,那么“.equals”函数会检查对象是否相等,而不是对象的值。使用“.valueOf()”

解决这个问题

其次,你有一个“ArrayIndexOutOfBoundsException”。这通常是由所谓的逐个错误引起的。移动“Count ++;”到for循环的结尾,我认为这会阻止它抛出异常。

答案 2 :(得分:0)

首先,你必须改变:

for(int i=0;i<arrays.length;++i){

为:

for(int i=0;i<arrays.length-1;++i){

因为您正在使用i+1

运行

其次,既然您正在使用count++ - 您实际上并没有计算任何东西。 你必须检查字符串是否已经在TreeMap中,如果是 - 将计数更新为:

mapper.get(thisSring) + 1

如果不是,请使用count = 1创建一个新项目:

 String thisSring = "";
 String nextString="";
 TreeMap<String,Integer> mapper = new TreeMap<String , Integer>();
 for(int i=0;i<arrays.length;++i){
     thisSring = arrays[i];
     nextString = arrays[i+1];
     if(mapper.get(thisString) != null){
         mapper.put(thisSring, mapper.get(thisString) + 1);
     }
     else {
         mapper.put(thisSring, 1);
     }
 }

答案 3 :(得分:0)

更改循环:

for (int i =0;i<arrays.length;i++) {

for (int i =0;i<arrays.length-1;i++) {

找到以下代码:

for (int i =0;i<arrays.length-1;i++) {
         thisString = arrays[i];
         count++;
         nextString = arrays[i+1];
         if(!thisString.equals(nextString)){
             mapper.put(thisString, count);
         }

         if (i<arrays.length-2) {
             mapper.put(thisString, count);
         }

}