使用类查找数据结构中的错误

时间:2017-01-02 01:48:55

标签: java return-value return-type

当我将一个元素添加到ArrayList数据结构类时,我需要使用类ReturnObjectImpl来基本上找到错误(这是一个大学分配)。

我不确定如何在ArrayList类中获取函数以返回ReturnObject。我需要一些方法将所有内容传递给ReturnObject,检查是否存在错误(我不知道该怎么做),然后提供错误消息或对象。

public interface ReturnObject {
    /**
     * Returns whether there has been an error
     * @return whether there has been an error
     */
    public boolean hasError();

    /**
     * Returns the error message. 
     * 
     * This method must return NO_ERROR if and only if
     * {@hasError} returns false.
     * 
     * @return the error message
     */
    public ErrorMessage getError(); //Changes the return to a String has in the interface ErrorMessage is throwing an error - if marks are deducted, please discuss with me

    /**
     * Returns the object wrapped in this ReturnObject, i.e. the
     * result of the operation if it was successful, or null if
     * there has been an error.
     * 
     * Note that the output of this method must be null if {@see
     * hasError} returns true, but the opposite is not true: if
     * {@see hasError} returns false, this method may or may not
     * return null.
     * 
     * @return the return value from the method or null if there has been an error
     */
    public Object getReturnValue();


}

然后是班级本身(目前尚未完成):

public class ReturnObjectImpl implements ReturnObject {

    // Constructor for successful operation
        ReturnObjectImpl (Object c){
            if (!hasError()){
                getReturnValue(c);
            }
        }

        // Constructor for error
        ReturnObjectImpl (){
            if (hasError()){
            //  getError();
            }
        }


    public boolean hasError() {
        //returns true or false depending on if there is an error

        return null;
    }


    public ErrorMessage getError() { //Changes the return to a String has in the interface ErrorMessage is throwing an error - if marks are deducted, please discuss with me
        //returns the error message is hasError == true or NO_ERROR if hasError() returns false

        return ErrorMessage;
    }



    public Object getReturnValue() {
        // TODO Auto-generated method stub
        return null;
    }

}

最后是ArrayList类

public class ArrayList implements List{
    public static final int CAPACITY=16;
    private int size = 0;
    private Object[] data;


    //constructors
    public ArrayList() {
         data = new Object[CAPACITY];
        }                             //Constructs arraylist with default capacity
    public ArrayList(int capacity) { // Constructs arraylist with given capacity
        data = new Object[capacity];
        System.out.println("Created an ArrayList of capacity " + capacity);
    }



    public boolean isEmpty(){
        return (size == 0);
    }

    public int size(){
        System.out.println("The ArrayList is not full, but currently has " + size + " indexs");
        return size;
    }

    public ReturnObject get(int index){
        return null; //INCOMPLETE

    }

    public ReturnObject remove(int index){
        return null;

    }

    public ReturnObject add(int index, Object item){
        if(index <= size && index < data.length){
            for (int x = size-1; x >= index; x--){
                data[x+1] = data[x];
                size++; 
            }
            data[index] = item;
            System.out.println("Added to array at " + index);
        }
        return null;

    }

    public ReturnObject add(Object item){
        if (data[0] == null){
            data[0] = item;
        } 
        //int adding = size + 1;
        data[size] = item;
        System.out.println("Added item to index " + size);
        size++;
        return null;
    }
    //added - but DELETE BEFORE SUBMITTING
    public void printAll(){
        for(int x = 0; x < data.length; x++){
            System.out.println(data[x]);
        }
    }


}

简而言之,我有两个问题: 1.在returnObjectImpl中,错误检查的功能应该是什么样的 2.更重要的是,我应该如何将公共ReturnObject add(Object item)的结果从ArrayList类发送到ReturnObjectImpl。

1 个答案:

答案 0 :(得分:0)

如果Listjava.util.List界面,那么您在此处有一些严重错误:

  1. 列表是一个通用接口,但您的ArrayList不是通用的。 (如果您为Java 1.4.x编写此代码,那就没关系。但是,Java 1.4.x已于10年前退役了!)

  2. 您的ArrayList方法与java.util.List API不兼容。例如,add应该返回booleanget应该返回元素类型(如果忽略泛型则返回Object)而不是其他类型。

    < / LI>

    如果不是......那么调用界面List是一个坏主意。同上ArrayList。你不应该&#34;借#34;像这样的标准类和接口的名称。它会让你陷入麻烦。

    回答你的问题:

      

    1)错误检查的功能在returnObjectImpl中应该是什么样的。

    没有returnObjectImpl方法。并且错误检查不属于ReturnObjectImpl类。该类(根据其名称和API设计)只是一个&#34;持有者&#34;表示值或错误条件。实际错误检查代码属于您的数组列表类;例如有点像这样。

    if (/* some error */) {
        return new ReturnObjectImpl(/* some error message */);
    }
    
      

    2)更重要的是,我应该如何将public ReturnObject add(Object item)ArrayList课程的结果发送到ReturnObjectImpl

    if (/* not an error */) {
        return new ReturnObjectImpl(/* the value */);
    }
    

    显然,您必须重新设计 ReturnObjectImpl构造函数才能实现这一目标。

    意见:我认为有人可能已经进入&#34;不要使用例外情况&#34; 心理困扰 1 一些已经学习过的人编程(比如说)C或C ++。没有进入关于例外情况是否良好的争论#34;或者&#34;坏&#34;,事实仍然是它们是Java语言不可或缺的一部分,并且它们在整个Java语言和类库中被一致地使用。你无法避免它们,如果你尝试就会伤到自己。

    如果这是你的设计,你真的想避免这么多例外......你应该使用不同的编程语言 2

    1 - 这不是为了贬义,但我担心&#34;避免例外&#34;思考很少(如果有的话)在Java生产力或可维护性方面给出了良好的结果。

    2 - 我提醒&#34;真正的程序员可以用任何语言编写FORTRAN&#34;