有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

无法将java集合转换为对象[]

需要帮助解决一个班级的问题!因此,我创建了一个名称数组,该数组被传递给Proj04Runner类中名为runA的方法。我需要创建一个这些名称的树集,将它们按自然升序排列,没有重复的值。然而,当我运行代码时,我得到一个错误,告诉我集合不能转换为对象[]

import java.util.*;

class Proj04{
  static String[] names = 
  {"Don","don","Bill","bill","Ann","ann","Chris","chris"};
  
  static Object[] myArray = new String[8];
  
  public static void main(String args[]){

Proj04Runner runner = new Proj04Runner();

Random generator = null;
if(args.length != 0){
  System.out.println("seed = " + args[0] );
  generator = new Random(Long.parseLong(args[0]));
}else{

  long seed = new Date().getTime();
  System.out.println("seed = " + seed);
  generator = new Random(new Date().getTime());
}

System.out.print("Input:  ");
for(int cnt = 0;cnt < myArray.length;cnt++){
  int index = ((byte)generator.nextInt())/16;
  if(index < 0){
    index = -index;
  }
  if(index >= 8){
    index = 7;
  }
  myArray[cnt] = names[index];
  System.out.print(myArray[cnt] + " ");

System.out.println();

myArray = runner.runA(myArray);

System.out.print("Intermediate Results: ");
for(int cnt = 0; cnt<myArray.length;cnt++){
  System.out.print(myArray[cnt] + " ");

System.out.println();

}

        import java.util.*;
    
    class Proj04Runner{
        
        Object[] myArray;
        Collection ref;
    
        Proj04Runner(){
    
        public Collection runA(Object[] myArray){
            this.myArray = myArray;
            ref = new TreeSet();
            for(int ct = 0; ct < myArray.length; ct++){
                ref.add(String.valueOf(myArray[ct]));
            }
            return ref;
        }
}

任何帮助都将不胜感激!谢谢大家!


共 (1) 个答案

  1. # 1 楼答案

    问题

    让我们检查一下类型:

    • myArrayObject[]的类型
    • 方法runA接受一个类型为Object[]的参数并返回Collection

    问题在于:

    myArray = runner.runA(myArray);
    

    现在我们将Object[]myArray)提供给方法runner.runA(),这是正确的。另一方面,我们返回Collection,并试图将其分配给类型为Object[]myArray)的变量,这是不正确的

    解决方案

    现在你有很多选择来解决这种类型的疯狂

    显而易见的两个问题是:

    • 使方法runA返回Object[]而不是Collection
      • e、 g.return ref.stream().toArray()
    • 使myArray类型为Collection而不是Object[]

    最后说明

    不要使用“原始”类型

    你说的不是Collection,而是什么的集合,例如整数集合Collection<Integer>或字符串集合Collection<String>

    int cnt被声明两次

    变量int cnt在同一范围内声明了两次