0

我对这个程序有一个小问题。这是一本约会簿,其想法是能够添加联系人和事件。

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

    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 不支持添加/删除操作。

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

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

4

1 回答 1

5

问题是你创建了自己的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。(除非您有充分的理由,否则您不应该实现自己的标准类版本。)

更新

(我没有注意到细微的ArrayList差别Arraylist。我的视力没有以前那么好了。对不起。我已经更新了上面的......)

你的堆栈跟踪是这样说的:

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()方法。

即使您确实导入了真正的ArrayList类,也没有什么区别。您没有使用它,因为您使用了错误的简单名称。

我们无法确定您是如何达到当前状态的,但堆栈跟踪不会说谎,您的源代码也不会。

(如果我猜的话,可能是您在某个时候使用了 IDE 的“建议更正”功能来修复拼写错误的标识符的未定义符号编译错误Arraylist。但是您选择了错误的更正......并且您的 IDE 有助于生成Arraylist该类的骨架实现,而不是拼写更正名称ArrayList并添加必要的导入。但这只是一个猜测......)

于 2017-04-09T06:48:30.630 回答