两个向量(数组)相乘(Java)
public class CMatrix {
private CMatrix() {}
/**
* Dot multiplication of two vectors.
*
* @param x one vector
* @param y another vector
* @return resykt of dot multiplication
*/
public static int dot(int[] x, int[] y) {
matrixNotNull(x, y);
vectorNotEmpty(x.length, y.length);
matrixNotMismatching(x.length, y.length);
int dot = 0;
for (int i = 0; i < x.length; i++) {
dot += x[i] * y[i];
}
return dot;
}
/**
* Dot multiplication of two vectors.
*
* @param x one vector
* @param y another vector
* @return resykt of dot multiplication
*/
public static double dot(double[] x, double[] y) {
matrixNotNull(x, y);
vectorNotEmpty(x.length, y.length);
matrixNotMismatching(x.length, y.length);
double dot = 0;
for (int i = 0; i < x.length; i++) {
dot += x[i] * y[i];
}
return dot;
}
// 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); }
}