Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java从listArray中删除条目_Java_Arraylist - Fatal编程技术网

Java从listArray中删除条目

Java从listArray中删除条目,java,arraylist,Java,Arraylist,我有一项创建通讯簿的任务。我基于良好的可用性创建了我的程序。例如,当创建一个新条目时,用户不能移动到下一个输入,直到给出一个有效的条目或选择取消。 创建程序后,我正在阅读导师给出的示例,在添加条目之前,他们不检查有效输入,而是发送.add请求,然后在检测到错误数据时引发异常 我问我的导师,如果我应该这样做,即使我认为我的设计更好,我不想失去分数,因为我没有按照他们的方式做。他说我应该坚持以下例子: public AddressBook() { entries = new ArrayLis

我有一项创建通讯簿的任务。我基于良好的可用性创建了我的程序。例如,当创建一个新条目时,用户不能移动到下一个输入,直到给出一个有效的条目或选择取消。 创建程序后,我正在阅读导师给出的示例,在添加条目之前,他们不检查有效输入,而是发送.add请求,然后在检测到错误数据时引发异常

我问我的导师,如果我应该这样做,即使我认为我的设计更好,我不想失去分数,因为我没有按照他们的方式做。他说我应该坚持以下例子:

public AddressBook()
{
    entries = new ArrayList < Entry >();
}

我试过这样做,并改变了:

throw new RuntimeException(e.getMessage()); 
行读

System.out.println( e.getMessage());

这样它就不会退出程序,但是这样做已经添加了条目,所以在给出适当的错误后,我需要删除已经添加的条目。我该怎么做?它有某种索引吗?我不知道导师为什么要你这样做,或者我没有抓住要点?

如果在这里调用的条目构造函数中抛出异常:

addressBook.addPerson(new Entry(name, street, town, postcode));
它不会添加到您的列表中。只需保持代码原样,并在此处捕获异常:

try{
   addressBook.addPerson(new Entry(name, street, town, postcode));
catch(Exception e){
   //Tell the user what he did wrong and let him reenter
}

如果在此处调用的条目构造函数中引发异常:

addressBook.addPerson(new Entry(name, street, town, postcode));
它不会添加到您的列表中。只需保持代码原样,并在此处捕获异常:

try{
   addressBook.addPerson(new Entry(name, street, town, postcode));
catch(Exception e){
   //Tell the user what he did wrong and let him reenter
}

您可以在构造函数中声明选中的异常,即扩展
exception
而不是
RuntimeException
的异常。然后,您将被迫在
addCommand
方法中处理它

public AddressBook() {
    entries = new ArrayList< Entry>();
}

public void addPerson(Entry addPerson) {
    entries.add(addPerson);
}

private void addCommand() {

    System.out.print("Enter Full Name : ");
    String name = myScanner.nextLine();
    System.out.print("Enter House No and Street name: ");
    String street = myScanner.nextLine();
    System.out.print("Enter Town: ");
    String town = myScanner.nextLine();
    System.out.print("Enter Postcode: ");
    String postcode = myScanner.nextLine();
    postcode = postcode.toUpperCase();
    final Entry entry;
    try {
        entry = new Entry(name, street, town, postcode);
    } catch  (BadDataException ex) {
        System.out.println(ex.getMessage());
        return;
    }        
    addressBook.addPerson(new Entry(name, street, town, postcode));
}


public Entry(String strName, String strStreet, String strTown, String strPostcode) throws BadDataException {
    name = strName;
    street = strStreet;
    town = strTown;
    postcode = strPostcode;
    try {
       checkDetails();
    } catch(Exception ex) {
       throw new BadDataException(ex);
    }
}

private static class BadDataException extends Exception {

    public BadDataException(final Throwable cause) {
         super(cause);
    }
}
公共通讯簿(){
entries=newarraylist();
}
公共无效添加人(条目添加人){
条目。添加(addPerson);
}
私有void addCommand(){
系统输出打印(“输入全名:”);
String name=myScanner.nextLine();
系统输出打印(“输入房屋编号和街道名称:”);
String street=myScanner.nextLine();
系统输出打印(“输入城镇:”;
字符串town=myScanner.nextLine();
系统输出打印(“输入邮政编码:”);
字符串postcode=myScanner.nextLine();
postcode=postcode.toUpperCase();
最终入围;
试一试{
条目=新条目(名称、街道、城镇、邮政编码);
}捕获(BadDataException ex){
System.out.println(例如getMessage());
返回;
}        
addressBook.addPerson(新条目(姓名、街道、城镇、邮政编码));
}
公共条目(字符串strName、字符串strStret、字符串strTown、字符串strPostcode)引发BadDataException{
名称=strName;
街道=街道;
城镇=斯特敦;
邮政编码=邮政编码;
试一试{
checkDetails();
}捕获(例外情况除外){
抛出新的BadDataException(ex);
}
}
私有静态类BadDataException扩展异常{
公共BadDataException(最终可丢弃原因){
超级(原因);
}
}

您可以在构造函数中声明选中的异常,即扩展
异常
而不是
运行时异常
的异常。然后,您将被迫在
addCommand
方法中处理它

public AddressBook() {
    entries = new ArrayList< Entry>();
}

public void addPerson(Entry addPerson) {
    entries.add(addPerson);
}

private void addCommand() {

    System.out.print("Enter Full Name : ");
    String name = myScanner.nextLine();
    System.out.print("Enter House No and Street name: ");
    String street = myScanner.nextLine();
    System.out.print("Enter Town: ");
    String town = myScanner.nextLine();
    System.out.print("Enter Postcode: ");
    String postcode = myScanner.nextLine();
    postcode = postcode.toUpperCase();
    final Entry entry;
    try {
        entry = new Entry(name, street, town, postcode);
    } catch  (BadDataException ex) {
        System.out.println(ex.getMessage());
        return;
    }        
    addressBook.addPerson(new Entry(name, street, town, postcode));
}


public Entry(String strName, String strStreet, String strTown, String strPostcode) throws BadDataException {
    name = strName;
    street = strStreet;
    town = strTown;
    postcode = strPostcode;
    try {
       checkDetails();
    } catch(Exception ex) {
       throw new BadDataException(ex);
    }
}

private static class BadDataException extends Exception {

    public BadDataException(final Throwable cause) {
         super(cause);
    }
}
公共通讯簿(){
entries=newarraylist();
}
公共无效添加人(条目添加人){
条目。添加(addPerson);
}
私有void addCommand(){
系统输出打印(“输入全名:”);
String name=myScanner.nextLine();
系统输出打印(“输入房屋编号和街道名称:”);
String street=myScanner.nextLine();
系统输出打印(“输入城镇:”;
字符串town=myScanner.nextLine();
系统输出打印(“输入邮政编码:”);
字符串postcode=myScanner.nextLine();
postcode=postcode.toUpperCase();
最终入围;
试一试{
条目=新条目(名称、街道、城镇、邮政编码);
}捕获(BadDataException ex){
System.out.println(例如getMessage());
返回;
}        
addressBook.addPerson(新条目(姓名、街道、城镇、邮政编码));
}
公共条目(字符串strName、字符串strStret、字符串strTown、字符串strPostcode)引发BadDataException{
名称=strName;
街道=街道;
城镇=斯特敦;
邮政编码=邮政编码;
试一试{
checkDetails();
}捕获(例外情况除外){
抛出新的BadDataException(ex);
}
}
私有静态类BadDataException扩展异常{
公共BadDataException(最终可丢弃原因){
超级(原因);
}
}

为什么不将您的条目添加到一个
try catch

try{
    Entry entry = new Entry(name, street, town, postcode);
    addressBook.addPerson(entry);
}catch(Exception e){
    // Entry is not added into the List.
    // do something and make the user re-enter the details.
}

为什么不将您的条目添加到一个
try catch

try{
    Entry entry = new Entry(name, street, town, postcode);
    addressBook.addPerson(entry);
}catch(Exception e){
    // Entry is not added into the List.
    // do something and make the user re-enter the details.
}

不添加条目吗?捕获异常?@bmorris591这是我的原始版本所做的,但当我与导师交谈时,他说要坚持他们的示例,这是他们所做的方式,而不是像他们的示例所示退出,他说我需要处理异常,向用户显示一条消息,然后要求重新输入。不知道如何才能做到这一点后,该条目已被添加,如他们的例子所示。我想我可能只是提交了我的原始程序,冒着丢失一些标记的风险当
条目的构造函数中发生异常时,该对象不会添加到Arraylist中。导师可能要求这样做的一个原因是,通过这种方式可以实现更好的
模块化。只有
Entry
类才能知道在输入错误时何时抛出异常。是否不添加该项?捕获异常?@bmorris591这是我的原始版本所做的,但当我与导师交谈时,他说要坚持他们的示例,这是他们所做的方式,而不是像他们的示例所示退出,他说我需要处理异常,向用户显示一条消息,然后要求重新输入。不知道如何才能做到这一点后,该条目已被添加,如他们的例子所示。我想我可能只是提交我的原始计划,冒着失去一些分数的风险