从数组中删除元素并使用嵌套循环移动其余元素?

时间:2018-10-30 23:41:02

标签: java arrays loops nested

到目前为止,这是我的代码:

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) 夏天 莫蒂”

我不明白为什么最后要打印三个“杰西卡”。任何帮助将不胜感激!

2 个答案:

答案 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;