0

我需要帮助来了解如何在我的程序中使用 java.lang.Object 的抽象类 org.apache.commons.math3.linear.RealVector。

我有三个类,应该使用它。一个点、一个单纯形和一个三角形。

Simplex-Class 应该使用 RealVector 类的方法来计算对象的周长,例如三角形。

import java.lang.Object.*;

package org.apache.commons.math3.linear;
import org.apache.commons.math3.linear.RealVector.Entry;
import org.junit.Assert;
public class Point
{
    private int dimension;
    private double[] values;
    private RealVector rv;

    public Point(int d, double... values) {
        try {
            this.dimension = d;
            this.values = values;
        } catch (IllegalArgumentException ex) {
            System.out.println("Bad Arguments");
        }
    }
    public double get (int i) {
        return values[i];
    }
    public int dim() {
        return dimension;
    }
}

当我编译时,我得到一个错误:

您已将 package 语句更改为此项目中不存在的包。

所以问题是:如何在我的程序中使用 RealVector 类?

4

1 回答 1

0

让我们关注代码的第一行:

import java.lang.Object.*;

package org.apache.commons.math3.linear;
import org.apache.commons.math3.linear.RealVector.Entry;
import org.junit.Assert;

它有很多问题:

  1. 包声明必须导入之前
  2. 您不应该将自己的类放入包org.apache.commons.math3.linear中。把它放在你自己的包里,以你的公司/组织命名。你不是为 apache 基金会写的。
  3. import java.lang.Object.*;没有意义。对象是一个类,而不是一个包。所以你不能导入java.lang.Object里面的所有类。而且您不需要从 java.lang 导入任何类:它们是隐式导入的。
  4. import org.apache.commons.math3.linear.RealVector.Entry;: 你从来没有在你的课堂上使用过这个 Entry 类。您正在使用 RealVector 类,所以这是您应该导入的类(尽管您并没有真正使用它:您只有一个该类型的私有字段,它从未初始化或读取,因此无用)。
  5. import org.junit.Assert;: 你也没有在你的代码中使用这个 Assert 类,所以它不应该被导入。顺便说一句,该类用于实现单元测试。它应该在单元测试中导入,而不是在生产类中。

首先解决所有这些问题,然后问另一个问题是否仍然存在编译错误,并提及确切和完整的错误。确保 math3 apache 库的 jar 文件在项目的类路径中:它没有与 JDK 捆绑,因此需要将其添加到项目中。

于 2017-05-13T15:32:15.123 回答