2つのベクトル(配列)ポイント対ポイント加算(Java)
5715 ワード
2つのベクトル(配列)ポイント対ポイント加算(Java)
public class CMatrix {
private CMatrix() {}
/**
* addition of two vectors.
*
* @param x one vector
* @param y another vector
* @return result vector
*/
public static int[] add(int[] x, int[] y) {
matrixNotNull(x, y);
int m1 = x.length;
int m2 = y.length;
vectorNotEmpty(m1, m2);
matrixNotMismatching(m1, m2);
int[] add = new int[m1];
for (int i = 0; i < m1; i++) {
add[i] = x[i] + y[i];
}
return add;
}
// throw an IllegalArgumentException if obj is null
// (obj is any type of array)
private static void matrixNotNull(Object... obj) {
for (Object o : obj) {
if (o == null)
throw new IllegalArgumentException("matrix is null");
}
}
// Check if the vectors are not empty.
private static void vectorNotEmpty(int... lens) {
for (int len : lens) {
if (len == 0)
throw new EmptyVectorException();
}
}
// Check if the two matrices are mismatch the number of rows.
private static void matrixNotMismatching(int n, int m) {
if (n != m)
throw new MismatchingMatrixException();
}
}
class EmptyVectorException extends RuntimeException {
public EmptyVectorException() { super(); }
public EmptyVectorException(String s) { super(s); }
}
class MismatchingMatrixException extends RuntimeException {
public MismatchingMatrixException() { super(); }
public MismatchingMatrixException(String s) { super(s); }
}