Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.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新手接口_Java - Fatal编程技术网

实现java新手接口

实现java新手接口,java,Java,我是java的新手,我正在尝试实现一个接口 那么主课呢 public interface Matrix{ //returns number of rows int numRows(); //returns number of columns int numColumns(); int addRows(...); .... } 现在我想解决的基本问题是。。我有两个矩阵matrixa和matrixb,类型为Matrix 我想基本上按行扩展矩阵。 所

我是java的新手,我正在尝试实现一个接口

那么主课呢

public interface Matrix{
    //returns number of rows
    int numRows();
    //returns number of columns
    int numColumns();

    int addRows(...);
    ....
}
现在我想解决的基本问题是。。我有两个矩阵
matrixa
matrixb
,类型为
Matrix

我想基本上按行扩展矩阵。 所以如果
matrixa
有10行,而
matrixb
有2行。 然后我想返回
matrixa+=matrixb

(当然,假设列数相同。)


正确的方法是什么?

简单的答案是:您可以通过阅读以下内容来实现一个接口

我将从java教程开始,因为您是初学者。不能实例化接口,接口(通常)只包含方法头定义。使用接口的方式是通过创建一个普通的java类来实现接口,该类为接口中的每个方法实现代码


顺便说一句,对于这样的问题,我强烈建议阅读教程,而不是依赖于阅读

您可以向界面添加其他方法,如:

   public interface Matrix{
             ....
           Matrix add( Matrix b );
    }
并检查是否有必要在实现中展开行。

为什么不能完全按照自己的要求执行? Java没有运算符重载。您不能对对象使用
+=
。 java世界普遍认为运算符重载会降低可读性

你能做什么 但是,您可以使用诸如
addMatrix(矩阵m)
之类的方法


我想弄明白这个问题。我想你要做的是定义:

int addRows(矩阵b)

在该方法实现中,您将:

  • 扩展你的矩阵
  • 将b行复制到新展开的矩阵中
  • 返回新的行数

  • 所有这些实现都取决于您如何实现矩阵接口。

    要实现接口,您需要创建一个类来实现接口和所有接口 它的方法

    public class MatrixImpl implements Matrix{
    
        private List<List<Integer>> elements = new ArrayList<List<Integer>>();
        private int rowSize;
    
        ...
    
        /** appends rows from provided matrix to this matrix */
        public Matrix addRows(Matrix b){
            List<List<Integer>> rows;
            if (b == this){
                rows = new ArrayList(b.elements);
            }else {
                rows = b.elements;
            }
            for (List<Integer> row : rows){
               if(row.size() == rowSize){
                  elements.add(new ArrayList(row));
               }else{
                  // do some error handling
               }
            }
            return this;// you may want to return a clone instead
        }
    
        ...
    
    }
    
    公共类MatrixImpl实现矩阵{
    私有列表元素=新的ArrayList();
    私有整数行大小;
    ...
    /**将提供的矩阵中的行追加到此矩阵*/
    公共矩阵addRows(矩阵b){
    列出行;
    如果(b==这个){
    行=新的ArrayList(b.元素);
    }否则{
    行=b.元素;
    }
    用于(列表行:行){
    if(row.size()==rowSize){
    添加(新的ArrayList(行));
    }否则{
    //做一些错误处理
    }
    }
    返回此;//您可能希望返回克隆
    }
    ...
    }
    
    您不能在Java中重载运算符如何添加不同维度的矩阵?您还可以
    抛出新的IllegalArgumentException()public class MatrixImpl implements Matrix{
    
        private List<List<Integer>> elements = new ArrayList<List<Integer>>();
        private int rowSize;
    
        ...
    
        /** appends rows from provided matrix to this matrix */
        public Matrix addRows(Matrix b){
            List<List<Integer>> rows;
            if (b == this){
                rows = new ArrayList(b.elements);
            }else {
                rows = b.elements;
            }
            for (List<Integer> row : rows){
               if(row.size() == rowSize){
                  elements.add(new ArrayList(row));
               }else{
                  // do some error handling
               }
            }
            return this;// you may want to return a clone instead
        }
    
        ...
    
    }