【问题标题】:Java -- error in removing duplicate elements from arrayJava——从数组中删除重复元素时出错
【发布时间】:2017-09-04 16:08:12
【问题描述】:

我知道有些人已经询问过重复问题,我查看了所有这些答案,但似乎没有一个对我有帮助/我仍然无法编译它。我的代码中是否有明显的东西我遗漏了????帮助(编程新手!)

我需要编写一个方法,它接受一个参数,一个字符串值数组,并返回一个没有重复值且不需要对原始数组进行排序的新数组。例如

String [] abc = {"A", "C", "C", "B", "A", "C", "B", "B", "A"};
String [] new = removeDuplicates (abc);
for (int i = 0; i < new.length; i++)
{
    System.out.print (new[i] + " ");
}
System.out.println();

输出应该是:A C B

这是我的代码:

    import java.util.*;

    class Duplication
    {
        public static void main (String [] args)
        {
            String [] values = {"A", "C", "C", "B", "A", "C", "B", "B", "A"};
            String [] newList = removeDuplicates (values);
        }
        private static String removeDuplicates (String [] originalArray)
        {
            for (int i = 0; i < newList.length; i++)
            {
                System.out.print (newList[i] + " ");
            }
            System.out.println();

            String noDuplicates = originalArray.length;
            for (int d = 0; d < noDuplicates; d++)
            {
                for (int e = d + 1; e < noDuplicates; e++)
                {
                    if(originalArray[d] == originalArray[e])
                    {
                        originalArray[e] = originalArray[noDuplicates-1];
                        noDuplicates--;
                        e--;
                    }
                }
            }
        }  
    }

六个错误:

    Duplication.java:9: error: incompatible types
    String [] newList = removeDuplicates (values);
                                     ^
    required: String[]
    found:    String
    Duplication.java:14: error: cannot find symbol
    for (int i = 0; i < newList.length; i++)
                        ^
    symbol:   variable newList
    location: class Duplicates
    Duplication.java:16: error: cannot find symbol
        System.out.print (newList[i] + " ");
                          ^
    symbol:   variable newList
    location: class Duplicates
    Duplication.java:21: error: incompatible types
    String noDuplicates = originalArray.length;
                                       ^
    required: String
    found:    int
    Duplication.java:32: error: bad operand types for binary operator '-'
                originalArray[e] = originalArray[noDuplicates-1];
                                                             ^
    first type:  String
    second type: int
    Duplication.java:35: error: bad operand type String for unary operator '--'
                noDuplicates--;
                            ^

【问题讨论】:

  • 请将数组从 new 重命名为其他名称..
  • 两个问题:(1)你的{public static void main之后在哪里? (2) 您是否在方法中尝试方法?因为那是不允许的。
  • 1. new 是保留字,Java 中的任何变量都不能使用该名称。 2. 在另一个方法中定义一个方法是不正确的。

标签: java arrays for-loop methods


【解决方案1】:

这在java中无效:

public static void main (String [] args)
String [] values = {"A", "C", "C", "B", "A", "C", "B", "B", "A"};
String [] newList = removeDuplicates (values);

您必须添加 { } 来定义静态 main 方法的范围:

public static void main (String [] args){
      String[] values = {"A", "C", "C", "B", "A", "C", "B", "B", "A"};
      String[] newList = removeDuplicates (values);
}

【讨论】:

    【解决方案2】:

    1) 你的方法 removeDuplicates() 返回一个字符串。在您的主块中,您需要一个字符串数组。

    2) 范围变量 newList 在主块内。所以,这个变量在 removeDuplicates 方法中是不可见的

    3) “originalArray.length”返回一个“int”,而不是一个字符串。

    【讨论】:

      【解决方案3】:

      您应该阅读错误消息。

       Duplication.java:9: error: incompatible types
       String [] newList = removeDuplicates (values);
      

      这个函数返回String 不是String []

       private static String removeDuplicates (String [] originalArray)
      

      你应该把它声明为

       private static String [] removeDuplicates (String [] originalArray)
      

      你应该在函数范围内声明newList才能使用它,这会导致

      Duplication.java:14: error: cannot find symbol
      for (int i = 0; i < newList.length; i++)
      

      长度是整数,应该像这样对待:

      int noDuplicates = originalArray.length;
      

      仔细阅读编译错误,它们解决了所有问题。

      【讨论】:

        【解决方案4】:

        这就是您需要的所有代码。 你可以在这里阅读收藏品https://docs.oracle.com/javase/tutorial/collections/

        import java.util.*;
        
            class Duplication
            {
                static String [] values = {"A", "C", "C", "B", "A", "C", "B", "B", "A"};
                public static void main (String [] args){
                    System.out.println(removeDuplicates(values));
        
                }
                static Set removeDuplicates(String [] originalArray)
                {
                    List arList = new ArrayList<String>(Arrays.asList(values));
                    return new LinkedHashSet<String>(arList);
                }  
            }
        

        【讨论】:

          猜你喜欢
          • 2010-10-13
          • 2013-03-23
          • 1970-01-01
          • 2013-05-20
          • 2011-07-03
          • 2017-08-08
          • 1970-01-01
          相关资源
          最近更新 更多