尝试添加时,UnsupportedOperationException(Arraylist)

时间:2017-04-09 06:25:48

标签: java arrays netbeans unsupportedoperation

我对这个程序有一个小问题。这是一本约会书,其目的是能够添加联系人和活动。

这是我的代码的第一部分,也是我遇到问题的部分:

    String aux = " ";
    String aux2 = " ";
    long aux3 = 0;

    Arraylist <Person> cole1 = new Arraylist();

    do{
    System.out.println("Welcome");
    System.out.println("- Book");
    System.out.println("1. Add contact");
    System.out.println("2. See contacts");
    System.out.println("3. Remove contacts");

    switch(Integer.parseInt(teclado.readLine())){
        case 1:
            for(int i = 0; i<cole1.size();i++){

                System.out.println("Write the name");
                aux = teclado.readLine();
                System.out.println("Write the email");
                aux2 = teclado.readLine();
                System.out.println("Write the phone number");
                aux3 = Integer.parseInt(teclado.readLine());

                cole1.add(new Person(aux, aux2, aux3));
            }
            break;

        default:
            System.out.println("error");
            break;
    }

    }while(true);  

这是我的人类:

public class Person {

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getEmail() {
    return email;
}

public void setEmail(String email) {
    this.email = email;
}

public float getNum() {
    return num;
}

public void setNum(long num) {
    this.num = num;
}

private String name;
private String email;
private long num;

public Persona(String n, String e, long nu){
    this.name=n;
    this.email=e;
    this.num=nu;

}


 }

此部分应该能够创建具有姓名,电话和电子邮件属性的新人。问题是,当我在交换机中按1添加选项时,我收到以下错误:

    Exception in thread "main" java.lang.UnsupportedOperationException: Not supported yet.
    at agenda.Arraylist.size(Arraylist.java:15)
    at agenda.AgendaTest.main(AgendaTest.java:40)
    C:\Users\melis\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: Java returned: 1
    BUILD FAILED (total time: 2 seconds)

我无法弄清楚它是否是逻辑或语法问题。我和其他有类似问题的人一起读过其他一些问题。不同的是,所有这些都显然使用了Arrays.asList属性,如果我理解正确的话,Arrays.asList不支持添加/删除操作。

关于出了什么问题的任何想法?

提前致谢!对不起,如果我的英语不好。

1 个答案:

答案 0 :(得分:4)

问题是您已经创建了自己的Arraylist课程(全名agenda.Arraylist),而您的课程没有实施add操作。这从堆栈跟踪中可以清楚地看出。

我猜你的实现是这样的:

package agenda;
import java.util.AbstractList;

public class Arraylist<T> extends AbstractList<T> {
    ...
    // No override for `add(<T>)`, `add(int, <T>)`, etcetera.
}

如果您没有实现add方法,则默认实现会抛出该异常。

解决方案:

  1. 完成agenda.Arraylist课程的实施。
  2. 不要实施自己的Arraylist。请改用标准java.util.ArrayList。 (除非你有充分的理由,否则你不应该实现自己的标准类版本。)
  3. <强>更新

    (我没有注意到ArrayListArraylist之间的微妙差异。我的视力并不像以前那么好。抱歉。我&#39;更新了以上内容......)

    您的stacktrace说:

    Exception in thread "main" java.lang.UnsupportedOperationException: Not supported yet.
    at agenda.Arraylist.size(Arraylist.java:15)
    at agenda.AgendaTest.main(AgendaTest.java:40)
    C:\Users\melis\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: Java returned: 1
    BUILD FAILED (total time: 2 seconds)
    

    第二行说明异常是在一个完全限定名为agenda.Arraylist的类中抛出的。

    注意:

    1. 不是java.util.ArrayList
    2. Arraylist的大写是......不同。
    3. 查看您的代码,我可以看到:
      • 使用 Arraylist类和
      • 您正在调用其size()方法。
    4. 即使您确实导入了真正的ArrayList课程,也没有任何区别。您没有使用它,因为您使用了错误的简单名称。

      我们无法确定您是如何进入当前状态的,但堆栈跟踪不是谎言,您的源代码也不存在。

      (如果我猜的话,那就是在某些时候你使用了你的IDE&#34;建议修正&#34;功能来修复未定义的符号编译错误您拼错的Arraylist标识符。但是您选择了错误的更正...并且您的IDE有助于生成Arraylist类的骨干实现,而不是将名称拼写为ArrayList和添加必要的导入。但这只是猜测...)