实现java新手接口
我是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 我想基本上按行扩展矩阵。 所
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
}
...
}