美好的一天,
我必须创建一个动态数组类,它将表示具有动态大小的字符串数组。我已经创建了 add 方法,但现在使用 removeElement 方法时遇到了一些困难。
这是我的代码:
public class DynamicArray {
public String[] dynamicString = new String[0];
public void addElement(String input) {
int loc = findFreeSpace();
if (loc >= 0) {
dynamicString[loc] = input;
}
else {
dynamicString = Arrays.copyOf(dynamicString, dynamicString.length + 1);
dynamicString[dynamicString.length - 1] = input;
}
}
public void removeElement(String input){
for(String eachElement : dynamicString){
if(eachElement.equalsIgnoreCase(input)) ; eachElement = null;
}
}
private int findFreeSpace() {
for (int i = 0; i < dynamicString.length; i++) {
if (dynamicString[i] == null) {
return i;
}
}
return -1;
}
public static void main(String[] args){
DynamicArray array = new DynamicArray();
array.addElement("a");
array.addElement("b");
array.addElement("c");
array.addElement("d");
array.removeElement("a");
System.out.println(array.dynamicString[0]);
}
在main方法中,4个String元素被添加到数组对象中。之后我使用removeElement 方法从该对象的dynamicString 中删除特定的字符串元素。但是,此方法不起作用,system.out.println 在控制台中打印“a”(而不是 null)。
最佳答案
eachElement
是数组中引用的副本,并且您要为此副本分配一个新值 (null)。因此原始引用文献保持不变。您需要一个传统的循环,它修改 dynamicString[i]
:
for (int i = 0; i < dynamicString.length; i++){
if (dynamicString[i].equalsIgnoreCase(input)) {
dynamicString[i] = null;
}
}
关于java - 无法在字符串数组中将字符串分配给 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23041480/