到目前为止,这是我的代码:
public class CustomerListerArray {
public static void main(String[] args) {
// TODO Auto-generated method stub
//creating the array
String[] customerName = new String [7];
customerName[0] = "Beth";
customerName[1] = "Jerry";
customerName[2] = "Rick";
customerName[3] = "Summer";
customerName[4] = "Morty";
// first loop/test
for(String x : customerName) {
System.out.println(x);
}
System.out.println(" ");
//second loop/test
customerName[5] = customerName[3];
customerName[6] = customerName[4];
customerName[3] = "Rick";
customerName[4] = "Jessica";
for(String x : customerName) {
System.out.println(x);
}
System.out.println(" ");
//third loop/test
int i = 0;
int p = 0;
for(String x : customerName) {
for(i = 0; i < customerName.length - 1; ++i) {
if((customerName[i] == "Rick")){
for (p = i; p < customerName.length; ++p){
customerName[i] = customerName[i +1];
}
}
}
System.out.println(x);
}
System.out.println(" ");
}
}
在第三次循环测试中,我试图从数组中取出“ Rick”,将其删除,然后将其余元素向上移动。输出应为:
“贝丝 杰瑞 杰西卡(Jessica) 夏天 莫蒂”
现在,程序输出以下内容:
“贝丝 杰瑞 里克 夏天 莫蒂 空值 空
贝丝 杰瑞 里克 里克 杰西卡(Jessica) 夏天 莫蒂
贝丝 杰瑞 杰西卡(Jessica) 杰西卡(Jessica) 杰西卡(Jessica) 夏天 莫蒂”
我不明白为什么最后要打印三个“杰西卡”。任何帮助将不胜感激!
答案 0 :(得分:0)
首屈一指-做customerName[i] == "Rick"
是一个经典的新手错误;无论它看起来如何,它都不会告诉您该值是否为“ Rick”(除非您做了一些我们不会涉及的特殊操作)。它会告诉您customerName[i]
处的对象是否与文字“ Rick”相同,这在生产环境中不太可能。您需要String类的equals()
方法;查找并记住这一点。例如,if (customerName[i].equals("Rick"))
。
阅读此内容以获取更多信息:https://docs.oracle.com/javase/7/docs/api/java/lang/String.html
对于杰西卡(Jessica),如果将该值从[i]
移至[j]
,则她仍在[i]
中;如果要“删除”杰西卡,则应将[i]
的值设置为其他值。
答案 1 :(得分:-1)
尝试一下。
private static void output() {
String[] str_array = {"Beth", "Jerry", "Rick", "Summer", "Morty"};
List<String> list = new ArrayList<>(Arrays.asList(str_array));
list.remove("Rick");
str_array = list.toArray(new String[0]);
for (String x : str_array) {
System.out.println(x);
}
}
请记住在类声明上方导入适当的API。
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;