2017-01-30 287 views
0

我试图通过将现有元素复制到新数组中删除空元素。但是,即使我在for循环内初始化它,新数组的初始化也会导致我的返回值为空。从数组(Java)中删除空元素

public String[] wordsWithout(String[] words, String target) { 
    for(int i = 0; i < words.length; i = i +1){ 
     String store[] = new String[words.length]; 
     if (words[i] == target){ 
      words[i] =""; 
     } 
     else if(words[i] != target){ 
      words[i] = store[i]; 
     }  
    } 
    return words; 
} 
+1

你需要'store [i] = words [i];',然后返回'store'。 –

+0

[this]的可能重复(http://stackoverflow.com/questions/9785336/how-to-check-if-array-indexes-are-empty-and-if-so-check-the-next)。请检查,这可能会帮助你。 –

+0

您正在为每次迭代创建store []。 store []总是一个长度为[]长度的数组,但只保存非空值 – baao

回答

0

您不应该使用==运算符比较字符串。这是不正确的,因为字符串是对象。使用.equals()方法,这应该解决您的问题。你的代码的

其余部分是相当混乱,很难理解你想要达到的:在创建新的字符串数组store在循环迭代每一次,然后分配其null(默认)值words[i]。你应该详细说明你的代码和算法。

+0

好的,但不等于什么? – Ruben

+0

同样的方式'!字[i]中。等于(目标)'。 – Andremoniy

+0

好吧,我试过你的方法,结果是一样的 – Ruben

0

有几件事我把它放在下面。希望你能从中得到帮助。

  1. String store[] = new String[words.length]实例化的 字符串数组,但它不与任何非 空值实例的任何元件。缺省值为null,因此这是一个空字符串数组。
  2. (words[i] != target)应改为

    (!字[I] .equals(目标))

0

实际上,我不知道你想达到什么,但如果你想删除空字符串出你的阵列,你可以用流和过滤器做在Java 8这样的:

String[] objects = Arrays.stream(new String[]{"This","", "will", "", "", "work"}).filter(x -> !x.isEmpty()).toArray(String[]::new); 
0

要检查平等使用.equals()方法,即string1.equals(字符串2),并检查不相等ÿ你可以使用相同的方法,但不要使用(!)操作符i-e。 !string1.equals(字符串2)。您应该在循环之外声明商店数组,因为在每次迭代中它都会创建一个新对象并使用商店。在其他条件下,这个商店[i] =词[i]。

1

数组是不可变的如此的尺寸保持不变,你需要创建一个新的Array 所以,如果你的旧阵列,你仍然有null元素

的大小创建一个新的磁盘阵列的基础。如果你想使用数组只需要计算数组中的非空元素来获取新数组的大小。它只是更容易使用一个List/ArrayList

public String[] wordsWithout(String[] words, String target) { 
    List<String> tempList=new ArrayList<String>(); 
    for(int i = 0; i < words.length; i = i +1){ 

     if (words[i]!=null||words[i].trim().length()>0){ 
      tempList.add(words[i]); 
     } 

    } 
    return (String[]) tempList.toArray(); 
} 
+0

好吧,我得到它的逻辑,但你可以建议一个方法,而不使用(列表)。现在我面临的问题是复制数组的初始化。我无法初始化for循环外部或for循环内,因为我只会返回一个空值的数组 – Ruben

+0

@Ruben这是一样的数组,只需删除列表,并使用数组 – AxelH

+0

如果您使用一个数组需要先计算现有数组中已填充的元素,然后将其用作新数组的大小,或者如果使用现有数组的大小,则仍然会有空元素 –